1

私はこのコードを何度か調べましたが、なぜエラーが発生するのか本当に理解できません:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at qrt2.practice.main(practice.java:34)

Eclipse 標準 SDK を使用しています

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

package qrt2;
import javax.swing.*;

public class practice {

        public static void main(String[] args) {

//creating JOption for the input

            String num1 = JOptionPane.showInputDialog("Enter the first number");
            int x = Integer.parseInt(num1);

            String num2 = JOptionPane.showInputDialog("Enter the first number");
            int y = Integer.parseInt(num2);

            String num3 = JOptionPane.showInputDialog("Enter the first number");
            int z = Integer.parseInt(num3);

            String num4 = JOptionPane.showInputDialog("Enter the first number");
            int v = Integer.parseInt(num4);

            String num5 = JOptionPane.showInputDialog("Enter the first number");
            int h = Integer.parseInt(num5);

            String num6 = JOptionPane.showInputDialog("Enter the first number");
            int k = Integer.parseInt(num6);


//creating array

            int [] ary = new int []{x,y,z,v,h,k};
            int counter;
            for( counter=0;counter<ary.length;counter++);
            System.out.println(counter + " " + ary[counter]);

        }
}
4

4 に答える 4

2
for(counter=0;counter<ary.length;counter++) {
    System.out.println(counter + " " + ary[counter]);
}

セミコロンを削除し、中括弧に置き換えます。次に、出力の後に中括弧を閉じます。

また、ベスト プラクティスを適用する場合は、次のようにループ内でカウンター変数も宣言する必要があります。

for(int counter = 0; counter < ary.length; counter++) {}
于 2013-07-11T13:16:46.550 に答える
2

forステートメントから末尾のセミコロンを削除します

for (counter = 0; counter < ary.length; counter++);
                                                  ^

セミコロンをそのままにしておくと、このステートメントに達するcounterと等しくなりますary.length

System.out.println(counter + " " + ary[counter]);

配列はゼロベースであるため、これによりArrayIndexOutOfBoundsException

変数counterがループ外で必要でない限り、次のforようにステートメントの初期化セクションに移動します

for (int counter=0; counter < ary.length; counter++) {
    System.out.println(counter + " " + ary[counter]);
}

これにより、ary[counter]式がすぐにコンパイルの失敗として表示されます。また、中かっこは範囲を明確にすることに注意してください。

于 2013-07-11T13:15:48.207 に答える
1

for ループからセミコロンを削除します。

for (counter = 0; counter < ary.length; counter++)
{
}
于 2013-07-11T13:18:34.213 に答える
1

問題は次の行にあります。

for( counter=0;counter<ary.length;counter++);
System.out.println(counter + " " + ary[counter]);

具体的には、これらの最初のものはループを完了し、2 番目のものは行を出力します - ループが完了し、カウンターが配列の長さを超えてインクリメントされた後 (したがって、ループから抜け出します)。必要なのはループ内で印刷することなので、これらの 2 行は次のようになります。

for( counter=0;counter<ary.length;counter++)
    System.out.println(counter + " " + ary[counter]);

(最初の行の末尾にあるセミコロンが削除されていることに注意してください)。または、さらに明確にするために:

for( counter=0;counter<ary.length;counter++) {
    System.out.println(counter + " " + ary[counter]);
}
于 2013-07-11T13:19:38.733 に答える