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

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

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

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

Q&A

解決済

4回答

928閲覧

JAVAのif文について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

1グッド

0クリップ

投稿2020/06/23 13:40

前提・実現したいこと

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を入力してください。"); } } }

ここにより詳細な情報を記載してください。

masibw👍を押しています

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

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

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

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

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

guest

回答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
kazuma-s

総合スコア8224

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

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

退会済みユーザー

退会済みユーザー

2020/06/23 14:55

驚きです!!! まだ始めたばかりで難しいですが、、、 こんなに短く書けるんですね! ありがとうございます。頑張ります。
guest

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

Daregada

総合スコア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

masibw

総合スコア38

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

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

退会済みユーザー

退会済みユーザー

2020/06/23 14:01

ありがとうございます!!! 納得しました。頑張ります。
guest

0

「昨日はランニングをしましたか?」「1:しました。、2:していません。」

という処理をする関数を作りましょう。
また、

「昨日はショッピングに行きましたか?」「1:行きました。、2:行きませんでした。」

という関数も作りましょう。

そうしておけば、
男性のとき、女性のとき、にそれぞれの関数を呼べばすみます

投稿2020/06/23 13:45

y_waiwai

総合スコア87774

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

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

退会済みユーザー

退会済みユーザー

2020/06/23 13:54

早速のご回答ありがとうございます。 昨日本を買って始めたばかりで、まだ関数?の使い方がわかりません。。。 そのソースコードの例を教えていただけませんでしょうか? 素人で申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問