ループを使用して重複なしで4つの乱数を生成しようとしていますが、ArrayIndexOutOfBoundsException
があります。誰かが理由を説明できますか?なぜこのコードは4つの異なる乱数を生成してArrayIndexOutOfBoundsExceptionをスローしますか?
// SECRET ANSWER
int secret[] = new int[4];
for (int i = 0; i < secret.length; i++) {
secret[i] = (int) (Math.random() * 6 + 1);
if (secret[i] == secret[i + 1] || secret[i] == secret[i + 2] || secret[i] == secret[i + 3]) {
secret[i] = (int) (Math.random() * 6 + 1);
}
if (secret[i + 1] == secret[i + 2] || secret[i + 1] == secret[i + 3]) {
secret[i] = (int) (Math.random() * 6 + 1);
}
if (secret[i + 2] == secret[i + 3]) {
secret[i] = (int) (Math.random() * 6 + 1);
}
}
あなたは長さ4の配列を持っていて、3よりも大きいインデックスにアクセスした場合、その後、あなたが境界エラーのうちのインデックスを取得します。あなたのコード内でどこに起こっているのか見ていますか? – astidham2003