質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

614閲覧

Hit&Blowのコードで、求めているのは正解まで何回繰り返えされかとそれと同じ数字が入力されたらメッセージが出るようにしたいです。

O11n11a11g1a

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/07/11 15:29

編集2019/07/12 01:33

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 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2019/07/11 15:50

1. コードはマークダウンで書いてください。  質問編集画面でコード部分を選択し、<code>というボタンを押し、「ここに言語を入力」の部分を「java」に書き換えてください。 2. 現状で何が問題なのかを明記してください。それが無いと丸投げの質問と同じになります。  こうなってほしいのにこうなるとか、こういうエラーが出るとか、そういった情報を入れてください。
m.ts10806

2019/07/12 01:20

>Hit&Blowのコードです。 タイトルには要件を記載してください。できれば「起きている問題」「つまずいていることを具体的に」書いてあること、ですね。 同じアプリケーションを作っていて次に質問するときもこのタイトルで質問して「タイトルだけで問題の分別がつけられるか」も考えてみてください。
guest

回答1

0

あなたがこのHit&Blowのジャッジマンだとして、どのように判断してどのように処理をするのか、考えてみてください。

質問された点に限れば、

  • ループカウントはゲームの進行と関係なく、ゲームが終わった後に数えようとしているので意味を成していません。
  • 重複チェックはヒット、ブローの判定の後になっている。チェックも重複があったらメッセージを出すだけで、そのときのゲームでの処理に影響を及ぼせない。

投稿2019/07/12 03:08

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

O11n11a11g1a

2019/07/12 04:58

ヒントを教えていただきありがとうございます。 プログラムを完成出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問