为什么索引大于循环条件会导致异常[Java]



我正在寻找两个数组中的匹配元素。如果找到匹配元件,我将kj设置大于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);
    }    
}

相关内容

最新更新