Java的哈利指数走出束缚异常的(Java Arry Index Out of Bound Exce

2019-08-17 17:48发布

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

该方案是很简单的,它运行,但是当我进入最后一个号码,我得到的错误:

例外在线程 “主” java.lang.ArrayIndexOutOfBoundsException:在minNumber.main 4(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);
}
}

Answer 1:

首先,如果你想在一个阵列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 ,而不是一个数组元素。



Answer 2:

<= numberArray.length应成为< numberArray.length

因为数组是0索引。



Answer 3:

在这两个循环中取出=。

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

   }
   ....
}


文章来源: Java Arry Index Out of Bound Exception