我正在寻找两个数组中的匹配元素。如果找到匹配元件,我将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
}
}
}
}
首先,您可以发布堆栈跟踪吗?
第二,您的例外很可能是由j = listOfSubcategories.size();
引起的,这使得比较k < listOfSubcategories.get(j).listOfID.size()
不可能。
下面的代码可行。
public class ForArray {
public static void main(String[] args) {
int[] myIntArray = {1, 2, 3}; //This is my Array
int searchingForThisNumberInArray = 2; //Search for this number in an array
int index=-1; //Index of the first matching element. -1 if element not found.
for (int i = 0; i < myIntArray.length; i++) { //Check each element
if (myIntArray[i] == searchingForThisNumberInArray) { //if this element contains correct number
index = i; //Save it in index
i = myIntArray.length; //Quit for cycle by increasing i.
}
}
System.out.println(index);
}
}