import java.util.Scanner; import java.util.Random; public class sampul { public static void main(String[] args) { //ゲーム説明 System.out.print("このゲームは3桁の数字を当てるゲームです"); System.out.println("正解するまでの回数が少なかった方が勝利です"); System.out.println("数字と桁が両方合っていればHit,数字のみならばBlowと表示されます"); System.out.println("先頭が0から始まる場合もあります"); //ランダム生成 int[] array={0,1,2,3,4,5,6,7,8,9}; int[] keta=new int[3]; for(int i=0; i<3; i++) { int answer=(int)(Math.random()*10); keta[i]=array[answer]; System.out.println(answer); String a=String.valueOf(answer); char[] b=a.toCharArray(); } //player1 System.out.println("3桁の数字を予測してください"); Scanner sc=new Scanner(System.in); boolean number=true; while(number==true) { int input=sc.nextInt(); String c=String.valueOf(input); int d=c.length(); char[] e=c.toCharArray(); if(d!=3) { System.out.println("数字は3桁です、再入力してください"); } if(d==3){ break; } } //Hit,Blow機能 int hit=0; int blow=0; if(b==e) { hit++; System.out.println(hit); } }
java初心者です。
質問したいことは//Hit&Blow機能の所がコンパイルするとbとeのシンボルが見つけられませんと表示されることです。私の解釈では//ランダム生成のfor{}と//player1のwhile{}で既に締めているのでその外でbとeを書いても見つからないと解釈しています。
しかし逆にfor }やwhile }を外して一番最後まで持ってくると勿論機能がおかしくなってしまいます。既に}で締めているのをbとeを外側で認識するのにはどうしたらいいのでしょうか?
たとえ b と e が見つけられるようになっても b==e は成り立たないと思いますが、それは良いのでしょうか。
配列はnullが使えるのですね。ありがとうございます。
とりあえずは数字が3桁しかないので、charで1桁目ならb[0]==e[0];で試そうと考えています。
b に3桁入っていますか?
ランダム生成の所のコードを変えてArrayList,Collections.Shuffleを使ったこーどにしました。それをint answer=list.get(i)と定義しました。それをString型に変換して更にそれをchar[] bに変換しました。確かにbには3桁入っていませんでした。なぜeには3桁入って、bには入らないのでしょうか?
逆に、なぜ b に 3 桁入ると思っておられるのかが不思議です。
answer には 1 桁しか入らないのに、「それをString型に変換して更にそれをchar[] bに変換」したら 3 桁に増えるでしょうか?
回答1件
あなたの回答
tips
プレビュー