私は2つの配列で一致する要素を探しています。一致する要素が見つかった場合は、k
とj
をfor
ループ条件より大きく設定してサイクルを終了しますが、内部ループ条件で例外が発生します。確かに、break outerloop;
を使用して修正できますが、ループを終了するループ条件であるfor
よりも大きいインデックスを設定していませんか?forループの条件を超えるインデックスが例外[Java]につながるのはなぜですか?
//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
}
}
}
}
なぜ*例外は発生しませんか? – Li357
Andrew、あなたのコメントは、Javaを学ぶ人には本当に役に立たない。 – sixtytrees
@sixtytreesなぜそれがありますか?私はなぜ例外がスローされるのか、彼に言った – Li357