0

さて、配列にある各整数の数を数えようとしているコードでエラーが発生しています。そして、それを修正する方法がわかりません。下部の while ループでエラーが発生します。どんな助けでも大歓迎です。ありがとう。

            if (ndx != array.length)
                while (array[ndx] == array[ndx + 1])
                    ndx++;
4

2 に答える 2

1

外側の for ループの最後の反復では、ndx は array.length よりも 1 小さいため、array[ndx+1] を呼び出すと、array[array.length] と同等になり、配列はインデックス付けを開始するため、範囲外になります。 0 で下の if ステートメントを次のように変更します。

if (ndx != array.length-1)

トリックを行う必要があります。

また、最後のwhileループでndxをインクリメントしているため、それを確認する条件も必要です。

while(ndx != array.length-1 && array[ndx]==array[ndx+1]) 

これで、array.length-1 の条件を while で処理できるようになったので、上記の行に含まれていた if を取り除くことができます。それが役立つことを願っています!

于 2012-11-27T00:42:22.130 に答える
0

次のコード行が原因で例外が発生します。

while (array[ndx] == array[ndx + 1])

ループの最後の反復では、ndx は次のようになります。array.length - 1

アクセスarray[ndx + 1]しようとすると、範囲外の配列インデックスにアクセスしようとしています。

while ループの上のif ステートメントを次のように変更する必要があります。

if (ndx != array.length - 1)

于 2012-11-27T00:44:25.673 に答える