私はこの興味深いArrayIndexOutofBounds
例外を抱えています。
コードは次のとおりです。
int m = 0;
while (scan.hasNextInt())
{
intArray[m++] = scan.NextInt();
}
一連の整数を配列にスキャンしているだけですが、常にArrayIndexOutofBounds
エラーが発生します。私int m
はすでにゼロに初期化されていると思いましたか?
ありがとう
inputString.length()
文字列の文字数を返します。必ずしも文字列内の数値の数に対応するとは限りません。while
ステートメントに別の条件を追加しm
て、 が より大きくならないようにする必要がありますintArray.length
。また、デバッガーを使用してコードをステップ実行し、配列がいつスペース不足になるかを正確に判断することをお勧めします。
Java 配列は固定サイズであるため、入力のサイズがわからない場合は、代わりに を使用ArrayList<Integer>
して入力を格納する必要があります。
ArrayIndexOutofBoundsは、配列が、入力する値の数を保持するのに十分な大きさではないことを意味します。配列intArrayをどこで初期化しますか?
スキャナーが事前に持っている値の数がわからない場合(私がそうだと思います)、代わりにArrayListを使用することをお勧めします。
このようなものが機能するはずです。
List<Integer> intArray = new ArrayList<Integer>();
while (scan.hasNextInt())
{
intArray.add(scan.NextInt());
}
ArrayLIstではなく配列で最終結果が必要な場合は、次を使用できます。
Integer[] newArray = (Integer[])intArray.toArray();
配列には、開始する要素が含まれていますか?
ループの将来の反復では、ループ内で m をインクリメントするため、m はゼロではありません。