1

私はJavaが初めてで、現在配列を学んでいます。だから私はこの小さなプログラムを作成して、ガロンあたりのマイルを計算するために使用ガスと移動マイルを入力しましたが、プログラムを実行するたびに21行目でエラーが発生します (miles[counter] = input.nextInt();) エラーは次のように述べています:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at GasMileage.inputGasAndMiles(GasMileage.java:21)
at GasMileage.main(GasMileage.java:44)

これが何を意味するのかわかりませんし、修正方法もわかりません。これについて何か助けがあれば幸いです。

int counter = 0;
int[] gallons, miles = new int[trips];

public void inputGasAndMiles(){

    for(counter = 0; counter <= trips; counter++){
        System.out.print("\nInput miles traveled: ");
        miles[counter] = input.nextInt();

        System.out.print("Input gallons of fuel used: ");
        gallons[counter] = input.nextInt();
    }
}

編集

public void askTrips(){
    System.out.print("How many trips would you like to calculate for: ");
    trips = input.nextInt();
}

スタックトレース:

public static void main(String[]args){
    GasMileage gas = new GasMileage();

    gas.askTrips();
    gas.inputGasAndMiles();
    gas.calculate();
    gas.display();
}
4

5 に答える 5

3

そのはずfor (counter = 0; counter < trips; counter++)

配列インデックスはゼロから始まるため、最大インデックスはそうではあり(size-1)ませんsize

編集:

int trips= 0; //any +ve value
int[] gallons =  new int[trips], miles = new int[trips];

public void inputGasAndMiles(){

for(counter = 0; counter < trips; counter++){
    System.out.print("\nInput miles traveled: ");
    miles[counter] = input.nextInt();

    System.out.print("Input gallons of fuel used: ");
    gallons[counter] = input.nextInt();
}

}

于 2013-03-27T17:56:07.067 に答える
0

これを変える

counter <= trips

これに

counter < trips

そこのfor構造で。

于 2013-03-27T17:56:29.363 に答える
0

これを試して

int counter = 0;
int[] gallons, miles = new int[trips];

public void inputGasAndMiles() {
    for(counter = 0; counter < trips; counter++) {
        System.out.print("\nInput miles traveled: ");
        miles[counter] = input.nextInt();

        System.out.print("Input gallons of fuel used: ");
        gallons[counter] = input.nextInt();
    }   
}
于 2013-03-27T17:57:10.653 に答える
0

変化する

for(counter = 0; counter <= trips; counter++)

for(counter = 0; counter < trips; counter++)

0 から (長さ -1 ) までの配列のインデックス

于 2013-03-27T17:58:07.767 に答える
0
for(counter = 0; counter <= trips; counter++)

に変更します:

for(counter = 0; counter < trips; counter++)

gallons配列のサイズはtripsです。最初のインデックスが で始まるため、配列0の最後のインデックスは になります。そして、あなたのコードでは、 for ループの (counter == trips) が true になったときに index の要素にアクセスしようとしています。gallonstrips-1tripsArrayIndexOutOfBounException

于 2013-03-27T17:56:07.240 に答える