Java
1import java.util.Random; 2import java.util.Scanner; 3public class hitblow1 { 4 static Scanner sc=new Scanner(System.in); 5 static char[] secretNumber=new char[4]; 6 static int i; 7 static int hitCount=0; 8 static int blowCount=0; 9 static char [] inputNumber=new char[4]; 10 static int loopCount=0; 11 static int substitution=0; 12 public static void main(String[] args) { 13 14 System.out.println("シークレットナンバーをせっとしました"); 15 secretArraySet(); 16 debugSecret(); 17 do { 18 inputArraySet(); 19 hitCountJob(); 20 blowCountJob(); 21 hitblowMessage(); 22 23 repeatNumber(); 24 25 }while(hitCount!=4); 26 loopCount(); 27 28 System.out.println("4Hit"); 29 } 30 //何回繰り返される 31 public static void loopCount() { 32 loopCount=0; 33 while(true) { 34 if(hitCount!=4) { 35 loopCount++; 36 }else { 37 break; 38 } 39 } 40 System.out.println("正解まで"+loopCount+"回かかりました"); 41 42 } 43 44 //ここでsecretNumberを表現している 45 public static void debugSecret() { 46 47 for(i=0;i<secretNumber.length;i++) { 48 System.out.print(secretNumber[i]); 49 } 50 System.out.print("\n"); 51 } 52 public static void secretArraySet() { 53 Random rnd=new Random(); 54 char [] arrayNumber= {'1','2','3','4','5','6','7','8','9'}; 55 int location01,location02; 56 char tmp;//temporaly 一時的ファイル 57 58 //無作為に50回arrayNumberの値を入れ替えた 59 for(i=0;i<50;i++) { 60 location01 = rnd.nextInt(arrayNumber.length); 61 location02 = rnd.nextInt(arrayNumber.length); 62 tmp = arrayNumber[location01]; 63 arrayNumber[location01]=arrayNumber[location02]; 64 arrayNumber[location02] = tmp; 65 } 66 //arrayNumberの前4つをsecretNumberに代入 67 for(i=0;i<secretNumber.length;i++) { 68 secretNumber[i]=arrayNumber[i]; 69 } 70 } 71 //ここでinputををする 72 public static void inputArraySet() { 73 74 System.out.println("4桁の異なる数値を入力してください"); 75 String inputStr=sc.next(); 76 inputNumber=inputStr.toCharArray(); 77 debugInput(); 78 } 79 //ここでinputNumberを表現している 80 public static void debugInput() { 81 82 for(i=0;i<inputNumber.length;i++) { 83 System.out.print(inputNumber[i]); 84 } 85 System.out.print("\n"); 86 } 87 //hit 88 public static void hitCountJob() { 89 hitCount=0; 90 for(i=0;i<secretNumber.length;i++) { 91 if(secretNumber[i]==inputNumber[i]) { 92 hitCount++; 93 } 94 } 95 } 96 //hit&blowの表示 97 public static void hitblowMessage() { 98 99 System.out.print("Hit:"+hitCount+" blow:"+blowCount+"\n"); 100 } 101 //blow 102 public static void blowCountJob() { 103 blowCount=0; 104 105 for(int j=0;j<secretNumber.length;j++) { 106 for(i =0;i<inputNumber.length;i++) { 107 if(secretNumber[j]==inputNumber[i] && i!=j) { 108 blowCount++; 109 } 110 } 111 } 112 } 113 114 115 116 117 } 118 } 119} 120
正解までにかかった回数と同じ数値が入力された場合の処理がしたいのですが、このコードではできないのでわかる方教えてください。
実行すると正解までにかかった回数が0回になるのでそこを回数が出るようにするにはどうすればいいですか?
提示のコードではどういうふうな動作になるんでしょうか
実行すると正解までにかかった回数が0回となります。
それを質問に追記してください
loopcountが動いてないので0回にはなるんだと思うんですけどどうすればいいですか?
それを質問に書きましょう。質問は編集できます。
わからないので教えろ、といわれても、なにがわからないのかわからんので教えようがないですが、
結果がこうなってしまうのはなぜか、そうならないようにするためにはどうすればいいのか、と具体的なことを書くと回答しやすいですよ
わかりました。
質問テンプレート使って書き直してもらったほうが回答を得やすくなると思います。
https://teratail.com/help/question-tips#questionTips3-8