3桁の数字を入力して、数も場所もあっている(ヒット)のは何個で、数だけあっている(ブロー)は何個かを随時教えてくれるプログラムを書いています。
正解の数字は乱数で出しています。また、何回もできるようにループさせています。
答え合わせのしやすいように、初めに正解の数字は表示させています。
解答者が入力した数字をi[a]という配列(?)に代入したところくらいからよくわからなくなってしまいました。
現在何を入力しても0個と0個が表示されてしまいます。
java初心者のため、どこがどう違うのか分かりやすく教えていただけると幸いです。
java
1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4import java.util.ArrayList; 5 6public class Main { 7 public static void main(String[] args) { 8 int[] answerNumList = new int[3]; 9 System.out.println("3桁の数字を当ててください"); 10 System.out.println("3桁の数字は重複しません"); 11 System.out.println("0から始まる数字も可能です(例 012)"); 12 System.out.println("数字と場所が合っている場合はヒット、数字だけが合っていたらブローとしてその数が表示されます"); 13 System.out.print("正解 "); 14 //0~9が入ったList を生成 15 ArrayList<Integer> tempNumList = new ArrayList<Integer>(); 16 for(int i = 0; i < 10; i++){ 17 tempNumList.add(i); 18 } 19 //Listからランダムに数字を取り出して3桁の数を生成 20 for(int i = 0; i <answerNumList.length; i++){ 21 int selectNum = (int)(Math.random() * tempNumList.size()); 22 answerNumList[i] = tempNumList.remove(selectNum); 23 } 24 for(int i=0; i < answerNumList.length; i++){ 25 System.out.print(answerNumList[i]); 26 if(i != answerNumList.length -1) 27 System.out.print( " "); 28 } 29 //入力後のステップ 30 while(true){ 31 try{ 32 System.out.println(); 33 System.out.println("3桁の数字を入力してください。"); 34 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 35 String str = br.readLine(); 36 37 int num = Integer.parseInt(str); 38 int a[]=new int[num]; 39 40 //エラーの初期化、エラーをfalseにしておく 41 boolean error = false; 42 int length = str.length(); 43 //3桁でない数が入力されたときエラーをtrueにする 44 if (length != 3) 45 error = true; 46 //同じ数が入力されたときエラーをtrueにする 47 for(int i = 0 ; i < length; i++) { 48 for(int j =i +1; j < length; j++) { 49 if(str.charAt(i) == str.charAt(j)) 50 error = true; 51 } 52 } 53 //エラーの時の画面表示 54 if(error == true){ 55 System.out.println("入力エラーです。"); 56 System.out.println("0~9までの数値を3桁で重複しないように入力してください。"); 57 } 58 59 if(error == false){ 60 //hitの初期化 61 int hit = 0; 62 for(int i = 0; i < answerNumList.length; i++) 63 { 64 if ( a[i] == answerNumList[i]) 65 { 66 hit++; 67 } 68 } 69 //blowの初期化 70 int blow = 0; 71 for(int i = 0; i < 3; i++) 72 { 73 for(int j = 0; j <answerNumList.length; j++) 74 { 75 if( a[i] == answerNumList[j]) 76 { 77 blow++; 78 } 79 } 80 } 81 if(hit == answerNumList.length) 82 { 83 System.out.println("正解です."); 84 } 85 else 86 { 87 System.out.println("ヒット" + hit + "個," + "ブロー" + (blow - hit)+ "個"); 88 } 89 } 90 91 92 } 93 catch(IOException e){ 94 e.printStackTrace(); 95 } 96 } 97 98 } 99} 100
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/21 17:09
2016/07/21 17:50