1. ホーム
  2. java

[解決済み] 配列のカウントダウンのための逆ループ

2022-03-03 04:55:58

質問

エラーが発生するのですが。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at Reverse.main(Reverse.java:20). 

構文に間違いはないので、コンパイル時にエラーが出るのはなぜでしょうか?

public class Reverse {

public static void main(String [] args){
    int i, j;


    System.out.print("Countdown\n");

    int[] numIndex = new int[10]; // array with 10 elements.

    for (i = 0; i<11 ; i++) {
        numIndex[i] = i;// element i = number of iterations (index 0=0, 1=1, ect.)
    }

    for (j=10; j>=0; j--){ // could have used i, doesn't matter.
        System.out.println(numIndex[j]);//indexes should print in reverse order from here but it throws an exception?
    }
}

}

解決方法は?

Javaは0ベースの配列インデックスを使用します。サイズ10のArrayを作成する場合 new int[10] を使用すると、配列内に 10 個の整数の 'セル' が作成されます。インデックスは次のとおりです。0, 1, 2, ...., 8, 9.

ループは11より1小さいインデックス、つまり10まで数えますが、そのインデックスは存在しません。