前提・実現したいこと
Javaの課題で乱数4桁を重複なしで画面出力したいのですが
上手くできません
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Java
1System.out.println("ゲームを始めます"); 2 int answer[] = new int[4]; 3 Boolean isDuplicate=false; 4 do{ 5 answer[0]=(int)(Math.random()*9)+1; 6 for(int i = 1;i < answer.length;i++){ 7 answer[1] = (int)(Math.random() * 10) ; 8 } 9 isDuplicate=false; 10 for (int j=0;j < answer.length-1;j++){ 11 for (int k=j+1; k < answer.length;k++){ 12 if (answer[j]==answer[k]){ 13 isDuplicate=true; 14 } 15 } 16 } 17 } while (isDuplicate); 18 System.out.println(); 19
コードタグで囲ってもらっていますが、閉じの```が抜けてしまっているようです。
質問欄を「編集」ボタンから修正してください。
>> うまくいきません
ではなくて、「どのようにうまくいかないのか」を明記してください。
たまに「質問者さんが頭の中で計算ミスしている」場合もあります。
例えば 7 × 4 は 28 なのに、21 としてしまっていて…とかですね。
あるいはコード的には正しくても見当違いのことをしている( 例えば「ユーザ入力を受け取っている」つもりで「標準出力」しているとかです ) 場合もあります。
「本来はこうあるべきだが、こうなる」みたいなものでもいいので書いてください。
要望が少し分かりづらいので確認ですが、
処理を見たところでは4桁を形成する数字に同じ数字があってはならない。
例(OK:1234、NG:1224)
ってことでいいですかね?
とりあえず処理的には3桁目(answer[2])と4桁目(answer[3])に値を設定しないまま、
処理を回しているため、初期値の0で一致して
isDuplicate=true;
の文に絶対入ってしまうため無限ループとなっています。
したい処理はそれです!無限ループを抜けるにはどのようにしたらいいのでしょうか?ここら辺の理解が乏しくすいません。
回答2件
あなたの回答
tips
プレビュー