Java Arry索引超出绑定exception

当我需要将5个用户输入的值存储到数组中,将其发送到方法,并查找并显示最低值时,我一直在研究这个基本的java程序。

该程序很简单,它运行,但当我输入最后一个数字时,我收到错误:

线程“main”中的exceptionjava.lang.ArrayIndexOutOfBoundsException:4 at minNumber.main(minNumber:14)

救命?

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

首先,如果你想在一个数组中有5个值,那么用5声明它:

 int numberArray[] = new int[5]; 

其次,你将离开数组的末尾。 更改

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

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

你还需要以这种方式改变你的其他j for循环。

getMin一下,除了上面提到的更改之外,你的getMin方法还需要另外一个更改,因为即使你进行了上面的更改,说num[j+1]仍会在数组的末尾运行。 我想你需要比较当前的数组元素和lowestNum ,而不是下一个数组元素。

<= numberArray.length应该变为< numberArray.length

因为数组是0索引的。

在两个循环中删除=。

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

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