java - For 循环在搜索 ArrayList 时跳过每隔一行

标签 java for-loop arraylist

我有一个从 10 到 100 的连续整数的数组列表。我生成一个随机数(比如 50),然后我想删除所有在 10 的位置有“5”的数字 - 从 50 到 59 的所有整数.

public static void updateMyGuess() {

 ArrayList<Integer> possibles = new ArrayList <Integer>();

 for (int i = 10; i < 100; i++) {
   possibles.add(i); 
    }

 int guess = 50; //my guess is generated by another method. Not listed here
 int tens = guess / 10 % 10;
 int x;

 for ( int i = 0; i < possibles.size(); i++) {
   x = possibles.get(i);
   if (x / 10 % 10 == tens) {
     possibles.remove(i);
 } 
}

出于某种原因,这只会从 ArrayList 中删除 50 年代的所有其他值:50、52、54... 58。这是为什么?我可以改变什么来让它去掉所有的 50 秒?

最佳答案

删除 [i] 处的元素后,[i+1] 处的元素(以及后面的所有元素)上移一位。旧的 [i+1] 现在占据 [i] 处的元素,因此当 i 递增时,您会跳过上移的元素。

关于java - For 循环在搜索 ArrayList 时跳过每隔一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236824/

相关文章:

java - GWT 音频录制

java - 执行操作后无法删除文件

java - 调用 driver.findElement 还是调用 WebElement.findElement 更快?

java - 如何使用 firebase 数据库更新本地对象

java - For 循环和计算移动平均线

java - Android:向 arrayList 添加超过 1 项并将其显示为一项

windows - 如何从 `for` 处理的项目(在 `in` 之后)调用子程序?

java - "for"指令在 Array<> 上的顺序

java - 计算所有字符序列

java - 迭代对象列表并跳过一个索引并稍后再次读取它