0

私は自分のコードを実行しようとしていますが、例外について何かを言っています:

java.lang.ArrayIndexOutOfBoundsException

私はそれをグーグルで検索しました。配列の長さが負またはそれより大きいインデックスにアクセスしようとすると、それが発生することがわかりました。しかし、私は問題を見つけることができないようです、ここに私のコードがあります:http: //pastebin.com/sXsBbYfh

ヘルパーに感謝します。

編集:エラーメッセージ:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Calculator.addOne(Calculator.java:127)
at Calculator.add(Calculator.java:88)
at Program.main(Program.java:8)

コードの関連部分については、私にはわかりません。それが私があなたのところに来る理由です。

4

2 に答える 2

3

問題は86行目にあるように見えます

  arrResult = this.addOne(arrResult.length);

配列インデックスは0ベースであるため、0-長さ-1で長さを渡し、それを使用して行127の配列にアクセスします。

  switch(arrResult[arrayIndex])
于 2012-11-27T19:08:41.180 に答える
0

コードのこの部分:

public int[] addOne(int arrayIndex)

 124.
        {

 125.
                switch(arrResult[arrayIndex])

 126.
                {

 127.
                        case 0:

 128.
                                arrResult[arrayIndex] = 1;

エラーの原因です。

ご了承ください。

Javaでは、配列のインデックス範囲は0から長さ-1です。

上記のコードでは、メソッドaddon()が呼び出されたときに、配列の長さをパラメーターとして渡しています。上記のコードarray[length]では、存在しないために例外としてアクセスしようとしています。したがって、あなたはそれを維持したいかもしれませんlength-1

次のコード行#86

    arrResult = this.addOne(arrResult.length);

コードには多くの論理エラーがあります。これはあなたが言及した例外をスローするものです

于 2012-11-27T19:12:35.437 に答える