我有一个从 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/