【发布时间】:2016-05-16 04:16:50
【问题描述】:
我有一个从 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);
}
}
由于某种原因,这只会从 50 年代的 ArrayList 中删除所有其他值:50、52、54... 58。这是为什么呢?我可以改变什么来让它摆脱所有 50 年代?
【问题讨论】:
-
要么使用迭代器(最好的方法),要么向后搜索列表(最简单的 hack)。