1

このコードは Java を使用して実装しました。「」というエラーが表示されましたjava.lang.ArrayIndexOutOfBoundsException。理由がわかりません。また、宣言した整数 (int op=0;) を変更せずに double に変更しました。プログラムは +、/、および - に対して正常に動作します。ただし、* ではありません。どうしてこんなことに?コードは次のとおりです。

class test {
    public static void main(String [] mySpace) {
        double op=0;
        if (mySpace[0].equals("*")) {
             op=Integer.parseInt(mySpace[1])*Integer.parseInt(mySpace[2]);
        }
        System.out.println("Heya! "+ op);
    }
}

編集:コマンドプロンプトでこれらのコマンドを使用しました:

javac test.java // test.java という名前のソース ファイルをコンパイルする場合

java test * 10 20 //実行用

4

4 に答える 4

5

にアクセスする場合mySpace[0]、配列には少なくとも 1 つの要素が必要です。そうでなければあなたは得るでしょうArrayIndexOutOfBoundsException。についても同様ですmySpace[1]

したがってmySpace.length、配列のメンバーにアクセスする前に、配列の実際の長さを確認するために使用します。有効なインデックスの範囲は 0 ~mySpace.length-1です。しかし、あなたはおそらくそれを知っています。

質問が例外自体に関するものではなく、渡したと思われるコマンドライン引数を Java が受信しなかった理由に関するものである場合は、最初のステップとして次を使用します。

System.out.println(Arrays.toString(mySpace));

Javaが実際に受け取ったものを診断します。

特に、*コマンドライン解析に関連する多くの状況で特別な意味を持ちます。

于 2013-06-06T13:22:18.817 に答える