当我需要将5个用户输入的值存储到数组中,将其发送到方法,并查找并显示最低值时,我一直在研究这个基本的java程序。
该程序很简单,它运行,但当我输入最后一个数字时,我收到错误:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:4 在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);
}
}
答案 0 :(得分:3)
首先,如果你想要一个数组中的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
方法还需要进行其他更改,因为即使您进行了更改,num[j+1]
仍然会在数组末尾运行。我认为你需要比较当前的数组元素与lowestNum
,而不是下一个数组元素。
答案 1 :(得分:0)
<= numberArray.length
应该成为< numberArray.length
因为数组是0索引的。
答案 2 :(得分: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++){
}
....
}