java
1public class sampul1{ 2 public static void main(String[] args) { 3 //ゲーム説明 4 System.out.println("このゲームは相手の3桁の数字を当てるゲームです"); 5 System.out.println("数字、桁両方合っていればHit、数字のみならばBlowと表示されます。"); 6 7 //ゲーム開始(player1の入力) 8 String name="p1"; 9 System.out.println(name+"さんは3桁の数字を入力してください"); 10 int number=new java.util.Scanner(System.in).nextInt(); 11 if(number<=99||number>999){ 12 System.out.println("数字は3桁です"); 13 System.out.println("再入力してください"); 14 int number1=new java.util.Scanner(System.in).nextInt(); 15 } 16 // player2の入力 17 String name1="p2"; 18 int count=1; 19 System.out.println(name1+"さんは相手の3桁の数字を予想してください"); 20 int input=new java.util.Scanner(System.in).nextInt(); 21 if(input<=99||input>=1000) { 22 System.out.println("数字は3桁です。"); 23 System.out.println("再入力してください"); 24 int input2=new java.util.Scanner(System.in).nextInt(); 25 } 26 if(input==number) { 27 System.out.println("1回で正解しました。おめでとうございます!"); 28 } 29 while(input!=number) { 30 System.out.println("違います、再入力してください"); 31 int a=new java.util.Scanner(System.in).nextInt(); 32 count++; 33 if(a==number) { 34 System.out.println(name1+"さんは"+count+"回目で正解しました。"); 35 break; 36 } 37 } 38 39 40 41 42 43 } 44} 45 46コード 47```### 前提・実現したいこと 48HitandBlowのヒント機能 49### 発生している問題・エラーメッセージ 50 51Javaを独学でスッキリJava入門1週読み終えて、初めてのアウトプットでHitandBlowを作っています。 52①数字と桁両方合っているHitと数字のみが合っているBlowの機能を付けたいです。 53恐らくlengthを使うのかなと予想はしていますが、これをどこに活用すれば良いのか分かりません。 54 55### 該当のソースコード 56 57 58 59 60### 試したこと 61 62### 補足情報(FW/ツールのバージョンなど) 63出来れば自分で考えたいので、答えというよりかは2~3行ぐらいのヒントを書いてもらって考え方を教えて貰いたいです。 64 65ここにより詳細な情報を記載してください。
コードは"<code>"または"<コード>"のボタンを押して出てくるやつの中に書きましょう。
今のままではかなり読みづらいです。
質問は編集できるので編集してください。
ありがとうございます。変更致しました。
まず、 Scanner は、同一の入力元から複数作るモノではありません。
一度作って変数に保存して使い回してください。
> 恐らくlengthを使うのかなと予想はしています
length とは何で、何に使えるつもりで「予想」しているのでしょうか。
プログラムを作ることは、既存の組み合わせをさらに組み合わせていく作業です。
「乗り物を作りたいです。ゴムを使うと予想しています」にどこまで意味があるでしょうか?
> 2~3行ぐらいのヒントを書いてもらって考え方を教えて貰いたい
まずは「数字、桁両方合っていればHit、数字のみならばBlowと表示」の「表示部分だけ」のメソッドを作ってみては如何でしょうか。判定自体はまだ出来ませんので、表示だけ、です。判定の結果はパラメータででも貰う形で良いかと思います。
・・・ヒント無しでもとにかくゲームが動作するようにするのが先かもしれませんね。
3桁セットのままでは扱いづらいと思うので、私だったら1桁ずつバラしますね。こんな感じで。
int third = (input % 1000) / 100; // 3ケタ目
回答1件
あなたの回答
tips
プレビュー