前提・実現したいこと
JAVAはじめたばかりのド素人です。
下記のコードは1回のみで終わってしましますが、さらに条件を増やしたいです。
例えば
1と入力された場合「あなたの性別は男性ですね。」と表示された後に、
「昨日はランニングをしましたか?」「1:しました。、2:していません。」
2と入力された場合「あなたは女性ですね。」と表示された後に、
「昨日はショッピングに行きましたか?」「1:行きました。、2:行きませんでした。」
のように質問を2、3回繰り返し最後に「以上で質問は終了です。」
となるようなJAVAプログラムの書き方を教えて下さい。
該当のコード
import java.io.*; class Sample1 { public static void main(String[] args) throws IOException { System.out.println("あなたの性別はなんですか?"); System.out.println("1:男性、2:女性"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1= br.readLine(); int seibetu = Integer.parseInt(str1); if(seibetu == 1){ System.out.println("あなたの性別は男性ですね。"); } else if(seibetu == 2) { System.out.println("あなたの性別は女性ですね。"); } else { System.out.println("1か2を入力してください。"); } } }
ここにより詳細な情報を記載してください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
数値の入力には Scanner を使うと便利ですよ。
メッセージのデータを配列で持つとこうなります。
Java
1import java.util.Scanner; 2 3class Test { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 7 String msg[][] = { 8 { 9 "あなたの性別は男性ですね。\n" 10 + "昨日はランニングをしましたか?\n" 11 + "1:しました。2:していません。", 12 "ランニングをしたんですね", 13 "ランニングをしていないんですね", 14 "1か2を入力してください。" 15 }, { 16 "あなたの性別は女性ですね。\n" 17 + "昨日はショッピングに行きましたか?\n" 18 + "1:行きました。2:行きませんでした。", 19 "ショッピングに行ったんですね", 20 "ショッピングに行ってないんですね", 21 "1か2を入力してください。" 22 } 23 }; 24 System.out.println("あなたの性別はなんですか?\n1:男性、2:女性"); 25 int sex = sc.nextInt(); 26 if (sex != 1 && sex != 2) 27 System.out.println("1か2を入力してください。"); 28 else { 29 System.out.println(msg[--sex][0]); 30 int n = sc.nextInt(); 31 if (n == 1 || n == 2) 32 System.out.println(msg[sex][n]); 33 else 34 System.out.println(msg[sex][3]); 35 } 36 } 37}
追記
ちょっと修正。
Java
1 if (sex != 1 && sex != 2) 2 System.out.println(msg[0][3]); 3 else { 4 System.out.println(msg[--sex][0]); 5 int n = sc.nextInt(); 6 if (n != 1 && n != 2) n = 3; 7 System.out.println(msg[sex][n]); 8 }
投稿2020/06/23 14:23
編集2020/06/23 14:50総合スコア8224
0
if 文は、それぞれの分岐処理の内部に別の if 文を書けるので、
Java
1if(seibetu == 1){ 2 System.out.println("あなたの性別は男性ですね。"); 3 // 2つめの質問の提示 4 // 2つめの選択肢の提示 5 // 入力とパース処理(たとえば、変数runに代入) 6 if (run == 1) { 7 // 1と答えた場合の処理 8 } else if (run == 2) { 9 // 2と答えた場合の処理 10 } else { 11 System.out.println("1か2を入力してください。"); 12 } 13} else if (seibetu == 2) { 14 // 以下略 15} 16
みたいにすれば、いくらでも質問を重ねていけます。知りたいのはそういうことですよね?
ただ、これではどんどん階層が深くなってプログラムが読みにくくなってしまうので、if 文の動作を理解できたら、もっと読みやすく書けないか検討しましょう。
投稿2020/06/23 13:57
総合スコア11990
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
以下のような形でif分の中にif分を入れる構造を作れば可能だと思います。
java
1 2 public static void main(String[] args) throws IOException { 3 System.out.println("あなたの性別はなんですか?"); 4 System.out.println("1:男性、2:女性"); 5 6 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 7 8 String str1 = br.readLine(); 9 int seibetu = Integer.parseInt(str1); 10 11 if (seibetu == 1) { 12 System.out.println("あなたの性別は男性ですね。"); 13 System.out.println("昨日はランニングをしましたか?"); 14 System.out.println("1:しました。2:していません。"); 15 String str2 = br.readLine(); 16 int didRun = Integer.parseInt(str2); 17 if (didRun == 1) { 18 System.out.println("ランニングをしたんですね"); 19 } else if (didRun == 2) { 20 System.out.println("ランニングをしていないんですね"); 21 } else { 22 System.out.println("1か2を入力してください。"); 23 } 24 } else if (seibetu == 2) { 25 System.out.println("あなたの性別は女性ですね。"); 26 27 System.out.println("昨日はショッピングに行きましたか?"); 28 System.out.println("1:行きました。2:行きませんでした。"); 29 String str2 = br.readLine(); 30 int didGoShopping = Integer.parseInt(str2); 31 if (didGoShopping == 1) { 32 System.out.println("ショッピングに行ったんですね"); 33 } else if (didGoShopping == 2) { 34 System.out.println("ショッピングに行ってないんですね"); 35 } else { 36 System.out.println("1か2を入力してください。"); 37 } 38 } else { 39 System.out.println("1か2を入力してください。"); 40 } 41 }
しかし if文の中にいくつもifが続くとコードが非常に見にくいため性別を管理する変数で情報を保持し以下のような記載をするのも良いと思います
java
1 public static void main(String[] args) throws IOException { 2 System.out.println("あなたの性別はなんですか?"); 3 System.out.println("1:男性、2:女性"); 4 5 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 6 7 String str1 = br.readLine(); 8 int seibetu = Integer.parseInt(str1); 9 String sex = ""; 10 11 if (seibetu == 1) { 12 System.out.println("あなたの性別は男性ですね。"); 13 sex = "man"; 14 } else if (seibetu == 2) { 15 System.out.println("あなたの性別は女性ですね。"); 16 sex = "woman"; 17 } else { 18 System.out.println("1か2を入力してください。"); 19 } 20 21 if (sex.equals("man")) { 22 System.out.println("昨日はランニングをしましたか?"); 23 System.out.println("1:しました。2:していません。"); 24 String str2 = br.readLine(); 25 int didRun = Integer.parseInt(str2); 26 if (didRun == 1) { 27 System.out.println("ランニングをしたんですね"); 28 } else if (didRun == 2) { 29 System.out.println("ランニングをしていないんですね"); 30 } else { 31 System.out.println("1か2を入力してください。"); 32 } 33 } else { 34 System.out.println("昨日はショッピングに行きましたか?"); 35 System.out.println("1:行きました。2:行きませんでした。"); 36 String str2 = br.readLine(); 37 int didGoShopping = Integer.parseInt(str2); 38 if (didGoShopping == 1) { 39 System.out.println("ショッピングに行ったんですね"); 40 } else if (didGoShopping == 2) { 41 System.out.println("ショッピングに行ってないんですね"); 42 } else { 43 System.out.println("1か2を入力してください。"); 44 } 45 } 46 }
投稿2020/06/23 13:53
総合スコア38
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「昨日はランニングをしましたか?」「1:しました。、2:していません。」
という処理をする関数を作りましょう。
また、
「昨日はショッピングに行きましたか?」「1:行きました。、2:行きませんでした。」
という関数も作りましょう。
そうしておけば、
男性のとき、女性のとき、にそれぞれの関数を呼べばすみます
投稿2020/06/23 13:45
総合スコア88042
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/23 13:54
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/23 14:55