Java Arry Index Out of Bound Exception

China☆狼群 提交于 2019-12-04 06:33:12

问题


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);
}
}

回答1:


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.




回答2:


<= numberArray.length should become < numberArray.length

since arrays are 0 indexed.




回答3:


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++){

   }
   ....
}


来源:https://stackoverflow.com/questions/15507177/java-arry-index-out-of-bound-exception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!