有人可以向我解释为什么以下代码段会引发运行时异常吗?
int i = 0;
for ( ; i < TOTAL; i++ ) {
String value = "" + i;
int key = numbers[i];
map.put(key, value);
}
i = 0;
for ( ; i < TOTAL; i++ ) {
String value = "" + i;
int key = numbers[i];
String valueInMap = map.get(key);
if(valueInMap == null || !valueInMap.equals(value)) {
throw new RuntimeException("Impossible!");
}
}
这是整个程序,除了我用随机数填充numbers[]
的部分。
我指的是throw new RuntimeException("Impossible!");
我得到了这个例外
答案 0 :(得分:6)
我用随机数填充
numbers[]
。
您收到异常,因为并非TOTAL
中的numbers[]
个项目中的所有值都是唯一的。发生这种情况时,新值会覆盖旧值,因此在第二个循环中会得到错误的结果。
要确保永远不会发生这种情况,请先将TOTAL
随机值放入HashSet<Integer>
,然后再将其复制到numbers[]
数组中。