0

ユーザーが入力した 5 つの値を配列に格納し、それをメソッドに送信し、最小値を見つけて表示する必要があるときに、この基本的な Java プログラムに取り組んできました。

プログラムは非常に単純で実行されますが、最後の数字を入力するとエラーが発生します。

スレッド「メイン」での例外 java.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);
}
}
4

3 に答える 3

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

于 2013-03-19T18:08:11.677 に答える
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++){

   }
   ....
}
于 2013-03-19T18:09:26.090 に答える
0

<= numberArray.lengthなるべき < numberArray.length

配列のインデックスは 0 であるためです。

于 2013-03-19T18:07:52.550 に答える