6

配列の単元を開始したばかりで、配列のこの非常に基本的な入門プログラムを参考にするサンプル コードがいくつか与えられました。基本的に、私がしなければならないことは、その曜日の気温を求める 2 つの配列を作成することだけです。情報を収集した後、このような文字列で単純に吐き出します。

月曜日の気温は16度

火曜日の気温は18度

...など

私が受け取ったサンプルコードから私が理解したことから、私はすべてを正しく行っています。しかし、(Netbeans で) プログラムを実行しようとすると、このエラーが発生します。

「スレッド「メイン」の例外 java.lang.ArrayIndexOutOfBoundsException: 7 at temperatures.Temperatures.main(Temperatures.java:27) Java 結果: 1」

コードは次のとおりです。

public static void main(String[] args)throws IOException {
        // TODO code application logic here
        BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
        String temp[]= new String[7];
        String day[]= new String[7];
        day[1]=("Monday");
        day[2]=("Tuesday");
        day[3]=("Wednesday");
        day[4]=("Thursday");
        day[5]=("Friday");
        day[6]=("Saturday");
        day[7]=("Sunday");
        for (int i=0; i <7; i++){
            System.out.println("Please enter the temperature for" + day[i]);
            temp[i]=br.readLine();
        }
        for (int i=0; i <7; i++){
        System.out.println("The high temperature on " + day[i]+ " was "+ temp[i]);
        }
    }
}
4

5 に答える 5

6

配列はゼロから始まります(<- 理由を説明する記事へのリンクです)。したがって、最初の値を問題として割り当てると、 Hope が役立つday[1]=("Monday");はずですday[0]=("Monday");

于 2012-05-17T18:01:34.373 に答える
4

Java の配列は、位置 1 ではなく位置 0 から始まります。したがって、配列を 7 のサイズに初期化すると、月曜日は 0、日曜日は 6 になります。利用可能なインデックス 7 はありません。

于 2012-05-17T18:01:19.017 に答える
1

配列は 0 から始まり、

これを試して

    day[0]=("Monday");
    day[1]=("Tuesday");
    day[2]=("Wednesday");
    day[3]=("Thursday");
    day[4]=("Friday");
    day[5]=("Saturday");
    day[6]=("Sunday");

このループを変更する必要があります

for(int i=0; i < 7; i++){
        System.out.println("Please enter the temperature for" + day[i]);
        temp[i]=br.readLine();
    }

このため

for(int i=0; i < day.length(); i++){
        System.out.println("Please enter the temperature for" + day[i]);
        temp[i]=br.readLine();
    }

お役に立てれば幸いです。

于 2012-05-17T18:04:18.860 に答える
0

配列が「N」の場合、その配列の境界は0で「N-1」です。あなたの場合、配列の境界は0と6です。しかし、存在しないarray[7]に値を書き込もうとしています。

于 2012-06-20T12:15:57.587 に答える
0

これは、配列が 1 から始まり、7 で終わるためです。配列の長さが 7 の場合、最後のインデックスは配列の長さよりも 1 つ少なくする必要があります。あなたの場合、配列は7つの要素に対して宣言したことを認識していますが、8つの位置を挿入しています。したがって、配列は 0 から開始し、6 で終了します。

于 2012-05-17T18:06:21.617 に答える