Java Arry Index Out of Bound Exception

2019-03-03 08:07发布

I have been working on this basic java program when I need to store 5 user entered values into an array, send it to a method, and find and display the lowest value.

The program is simple enough, and it runs, but when I enter the last number, I get the error:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at minNumber.main(minNumber:14)

Help?

import java.util.*;

class minNumber {


    public static void main(String args[]){

    Scanner input = new Scanner(System.in);

    int numberArray[] = new int[4];
    int findLowest;

    for (int i = 0; i <= numberArray.length; i++){
        System.out.println("Enter a value for slot "+(i+1)+ ":");
        numberArray[i] = input.nextInt();   
    }
    findLowest = getMin(numberArray);
    displayOutput(findLowest);
}

public static int getMin(int num[]){

int lowestNum = 0;
for (int j = 0; j <= num.length; j++){
    if (num[j] < num[j+1]){

        lowestNum = num[j];
    }
}
return lowestNum;
}

public static void displayOutput(int lowest){

System.out.println("The lowest number is: "+lowest);
}
}

3条回答
相关推荐>>
2楼-- · 2019-03-03 08:39

<= numberArray.length should become < numberArray.length

since arrays are 0 indexed.

查看更多
来,给爷笑一个
3楼-- · 2019-03-03 08:53

Remove the = in both loop.

public static void main(String args[]){
   .......
   for (int i = 0; i < numberArray.length; i++){
       ........
   }
   .........
}

and

public static int getMin(int num[]){
 .....
   for (int j = 0; j < num.length -1 ; j++){

   }
   ....
}
查看更多
兄弟一词,经得起流年.
4楼-- · 2019-03-03 08:58

First, if you want 5 values in an array, then declare it with 5:

int numberArray[] = new int[5];

Second, you are going off the end of the array. Change

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

to

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

You'll need to change your other j for loop this way also.

As an aside, your getMin method needs another change besides the change I mentioned above, because saying num[j+1] will still run off the end of the array even if you make the change above. I think you'll need to compare the current array element versus lowestNum, not the next array element.

查看更多
登录 后发表回答