さて、配列にある各整数の数を数えようとしているコードでエラーが発生しています。そして、それを修正する方法がわかりません。下部の while ループでエラーが発生します。どんな助けでも大歓迎です。ありがとう。
if (ndx != array.length)
while (array[ndx] == array[ndx + 1])
ndx++;
さて、配列にある各整数の数を数えようとしているコードでエラーが発生しています。そして、それを修正する方法がわかりません。下部の while ループでエラーが発生します。どんな助けでも大歓迎です。ありがとう。
if (ndx != array.length)
while (array[ndx] == array[ndx + 1])
ndx++;
外側の 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 を取り除くことができます。それが役立つことを願っています!
次のコード行が原因で例外が発生します。
while (array[ndx] == array[ndx + 1])
ループの最後の反復では、ndx は次のようになります。array.length - 1
アクセスarray[ndx + 1]
しようとすると、範囲外の配列インデックスにアクセスしようとしています。
while ループの上のif ステートメントを次のように変更する必要があります。
if (ndx != array.length - 1)