简体   繁体   中英

Array index out of bounds but shouldn't be

I'm making a pretty simple java-program and I get the following error (where n is a random number based on previous input from console):

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: n

the line that is supposed to cause trouble is the if-statement here:

for(int i = 0; 0 < x; i++){
    if(TalArray[i] < min){
         min = TalArray[i];
    }
}

the variable "min" is previously initzialized to TalArray[0] and is keeping track of the lowest number. All variables mentioned are int-variables

The correct code is...

for(int i = 0; i < x; i++){
    if(TalArray[i] < min){
        min = TalArray[i];
    }
}

It's not clear what's the value of x in the code, but anyway the loop condition should look like this:

for (int i = 0; i < TalArray.length; i++)

Or like this, to avoid accessing the length at each iteration:

for (int i = 0, x = TalArray.length; i < x; i++)

The 0 < x comparison is mistaken: you're not modifying the value of x inside the loop, so the loop will either enter an infinite loop or not enter the loop at all, depending on the initial value of x .

The problem is, that your variable X is never changing so your condition 0 < x is always true .

I guess the correct condition would be

for(int i = 0; i < x; i++)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM