【发布时间】:2016-06-22 14:08:18
【问题描述】:
我正在两个数组中搜索匹配的元素。如果找到匹配元素,我将k 和j 设置为大于for 循环条件以退出循环,但在内部循环条件下出现异常。当然,我可以通过使用break outerloop; 来修复它,但是设置索引不是大于应该退出循环的for 循环条件吗?
//outerloop:
for (int j = 0; j < listOfSubcategories.size(); j++) {
if (listOfSubcategories.get(j).subcatName.equals(rawOptions.get(i).subcatName)) { //if the subcatName exists
for (int k = 0; k < listOfSubcategories.get(j).listOfID.size(); k++) {
if (0 == rawOptions.get(i).codeID.compareTo(listOfSubcategories.get(j).listOfID.get(k).codeID)) {//if this id (as in 0090-01 exists
listOfSubcategories.get(j).listOfID.get(k).usageCount += rawOptions.get(i).usageCount;
isProcessed = true;
k=listOfSubcategories.get(j).listOfID.size(); //this fails
j = listOfSubcategories.size();
//break outerloop; //this works
}
}
}
}
【问题讨论】:
-
为什么不会导致异常?您无法访问不存在的内容
-
安德鲁,您的评论对学习 Java 的人没有真正的帮助。
-
@sixtytrees 为什么不是呢?我告诉他为什么会抛出异常
-
@Andrew。您有效地说“肯定它会抛出异常,因为它必须抛出它。我明白原因,但你,失败者,不要。这是你的反对票”。这就是你所做的。非常热情好客,干得好。
-
如果您遇到异常,请查看该异常的 javadoc(例如
IndexOutOfBoundsException)和引发异常的方法调用(例如List.get(int)),以了解为什么该异常可能被扔掉。