Hit&Blowのコードです。
求めているのは正解まで何回繰り返したか
それと同じ数字が入力されたらメッセージが出るようにしたいです。
例 1123 "同じ数字が入力されています"
同じ数字が入力されたら繰り返しのカウンタに入らないようにしたいです。
java
1import java.util.Random; 2import java.util.Scanner; 3public class HitBlow { 4 5 static Scanner sc=new Scanner(System.in); 6 static char[] secretNumber=new char[4]; 7 static int i; 8 static int hitCount=0; 9 static int blowCount=0; 10 static char [] inputNumber=new char[4]; 11 static int loopCount=0; 12 static int substitution=0; 13 public static void main(String[] args) { 14 15 System.out.println("シークレットナンバーをせっとしました"); 16 secretArraySet(); 17 debugSecret(); 18 do { 19 inputArraySet(); 20 hitCountJob(); 21 blowCountJob(); 22 hitblowMessage(); 23 24 repeatNumber(); 25 26 }while(hitCount!=4); 27 loopCount(); 28 29 System.out.println("4Hit"); 30 } 31 //ここでsecretNumberを表現している 32 public static void debugSecret() { 33 34 for(i=0;i<secretNumber.length;i++) { 35 System.out.print(secretNumber[i]); 36 } 37 System.out.print("\n"); 38 } 39 public static void secretArraySet() { 40 Random rnd=new Random(); 41 char [] arrayNumber= {'1','2','3','4','5','6','7','8','9'}; 42 int location01,location02; 43 char tmp;//temporaly 一時的ファイル 44 45 //無作為に50回arrayNumberの値を入れ替えた 46 for(i=0;i<50;i++) { 47 location01 = rnd.nextInt(arrayNumber.length); 48 location02 = rnd.nextInt(arrayNumber.length); 49 tmp = arrayNumber[location01]; 50 arrayNumber[location01]=arrayNumber[location02]; 51 arrayNumber[location02] = tmp; 52 } 53 //arrayNumberの前4つをsecretNumberに代入 54 for(i=0;i<secretNumber.length;i++) { 55 secretNumber[i]=arrayNumber[i]; 56 } 57 } 58 //ここでinputををする 59 public static void inputArraySet() { 60 61 System.out.println("4桁の異なる数値を入力してください"); 62 String inputStr=sc.next(); 63 inputNumber=inputStr.toCharArray(); 64 debugInput(); 65 } 66 //ここでinputNumberを表現している 67 public static void debugInput() { 68 69 for(i=0;i<inputNumber.length;i++) { 70 System.out.print(inputNumber[i]); 71 } 72 System.out.print("\n"); 73 } 74 //hit 75 public static void hitCountJob() { 76 hitCount=0; 77 for(i=0;i<secretNumber.length;i++) { 78 if(secretNumber[i]==inputNumber[i]) { 79 hitCount++; 80 } 81 } 82 } 83 //hit&blowの表示 84 public static void hitblowMessage() { 85 86 System.out.print("Hit:"+hitCount+" blow:"+blowCount+"\n"); 87 } 88 //blow 89 public static void blowCountJob() { 90 blowCount=0; 91 92 for(int j=0;j<secretNumber.length;j++) { 93 for(i =0;i<inputNumber.length;i++) { 94 if(secretNumber[j]==inputNumber[i] && i!=j) { 95 blowCount++; 96 } 97 } 98 } 99 } 100 //何回繰り返される 101 public static void loopCount() { 102 loopCount=0; 103 while(true) { 104 if(hitCount!=4) { 105 loopCount++; 106 }else { 107 break; 108 } 109 } 110 System.out.println("正解まで"+loopCount+"回かかまりました"); 111 112 } 113 114 115 //同じ数字が入力されたらメッセージが出る 116 public static void repeatNumber() { 117 for(i = 0; i <inputNumber.length; i++){ 118 if(inputNumber[0]==inputNumber[1] || inputNumber[0]==inputNumber[2] || inputNumber[0]==inputNumber[3]){ 119 System.out.println("同じ数値が入力しています"); 120 break; 121 }else if(inputNumber[1]==inputNumber[0] || inputNumber[1]==inputNumber[2] || inputNumber[1]==inputNumber[3]){ 122 System.out.println("同じ数値が入力しています"); 123 break; 124 }else if(inputNumber[2]==inputNumber[0] || inputNumber[2]==inputNumber[1] || inputNumber[2]==inputNumber[3]) { 125 System.out.println("同じ数値が入力しています"); 126 break; 127 }else if(inputNumber[3]==inputNumber[0] || inputNumber[3]==inputNumber[2] || inputNumber[3]==inputNumber[1]) { 128 System.out.println("同じ数値が入力しています"); 129 break; 130 }else { 131 continue; 132 } 133 134 } 135 }
1. コードはマークダウンで書いてください。
質問編集画面でコード部分を選択し、<code>というボタンを押し、「ここに言語を入力」の部分を「java」に書き換えてください。
2. 現状で何が問題なのかを明記してください。それが無いと丸投げの質問と同じになります。
こうなってほしいのにこうなるとか、こういうエラーが出るとか、そういった情報を入れてください。
>Hit&Blowのコードです。
タイトルには要件を記載してください。できれば「起きている問題」「つまずいていることを具体的に」書いてあること、ですね。
同じアプリケーションを作っていて次に質問するときもこのタイトルで質問して「タイトルだけで問題の分別がつけられるか」も考えてみてください。