現在、年齢と性別で条件を分岐するプログラムを書いていますが、こちらの条件がいまいちわかりません。
Java
1else if
文を使うとおもうのですがいまいちうまく行きません。
以下が現在書いているプログラムです。
Java
1package practice; 2 3import java.util.Scanner; 4 5public class Practice4 { 6 public static void main(String[]args) { 7 8 //"性別と年齢を入力し、それぞれに対応した入場料金を出力する。 9 //・boyで20歳以上の時は2000円 10 //・boyで20歳未満の時は1800円 11 //・girlで20歳以上の時は1600円 12 //・girlで20歳未満の時は1400円" 13 14 System.out.println("性別を入力してください。"); 15 16 Scanner scanner = new Scanner(System.in); 17 18 String gender = scanner.nextLine(); 19 20 if(gender.matches("boy")) { 21 System.out.println("boy"); 22 } else if (gender.matches("男")) { 23 System.out.println("男"); 24 } else if (gender.matches("girl")) { 25 System.out.println("girl"); 26 } else if (gender.matches("女")) { 27 System.out.println("女"); 28 } else { 29 System.out.println("正しく入力してください。"); 30 } 31 32 System.out.println("年齢を入力してください。"); 33 34 if (gender.matches("boy")); 35 if (gender.matches("男")); 36 int age = scanner.nextInt(); 37 } else if (age >= 20);{ 38 System.out.println("2000円"); 39 } else if (age <= 19 );{ 40 System.out.println("1800円"); 41 } 42 } 43} 44
このプログラの男性、女性、年齢によって金額を変える分岐がうまくいきません。
お分かりになる方がいらっしゃいましたらお力を貸してください。
よろしくお願いいたします。
プログラムを修正したのですが、はじめの『boy』のみうまくいき、
あとのプログラムが思ったように動作してくれません。
またプログラムが長すぎるのですが、私にはいまいちわからずお力を
貸していただきたいです。
(現在も試行錯誤中です。)
Java
1package practice; 2 3import java.util.Scanner; 4 5public class Practice4 { 6 7 public static void main(String[]args) { 8 9 //"性別と年齢を入力し、それぞれに対応した入場料金を出力する。 10 //・boyで20歳以上の時は2000円 11 //・boyで20歳未満の時は1800円 12 //・girlで20歳以上の時は1600円 13 //・girlで20歳未満の時は1400円" 14 15 System.out.println("性別を入力してください。"); 16 17 Scanner scanner = new Scanner(System.in); 18 19 String gender = scanner.nextLine(); 20 21 try { 22 if(gender.matches("boy")) { 23 System.out.println("boy"); 24 System.out.println("年齢を入力してください。"); 25 int age = scanner.nextInt(); 26 if ( age >= 20 ) { 27 System.out.println("2000円"); 28 } else if ( age <= 19 ) { 29 System.out.println("1800円"); 30 31 } else if (gender.matches("男")) { 32 System.out.println("男"); 33 System.out.println("年齢を入力してください。"); 34 if ( age >= 20 ) { 35 System.out.println("2000円"); 36 } else if ( age <= 19 ) { 37 System.out.println("1800円"); 38 39 } else if (gender.matches("おとこ")) { 40 System.out.println("おとこ"); 41 System.out.println("年齢を入力してください。"); 42 if ( age >= 20 ) { 43 System.out.println("2000円"); 44 } else if ( age <= 19 ) { 45 System.out.println("1800円"); 46 47 } else if (gender.matches("girl")) { 48 System.out.println("girl"); 49 System.out.println("年齢を入力してください。"); 50 if ( age >= 20 ) { 51 System.out.println("1600円"); 52 } else if ( age <= 19 ) { 53 System.out.println("1400円"); 54 55 } else if (gender.matches("女")) { 56 System.out.println("女"); 57 System.out.println("年齢を入力してくだい。"); 58 if ( age >= 20 ) { 59 System.out.println("1600円"); 60 } else if ( age <= 19 ) { 61 System.out.println("1400円"); 62 63 } else if (gender.matches("おんな")) { 64 System.out.println("おんな"); 65 System.out.println("年齢を入力してください。"); 66 if ( age >= 20 ) { 67 System.out.println("1600円"); 68 } else if ( age <= 19 ) { 69 System.out.println("1400円"); 70 71 } else { 72 System.out.println("正しく入力してください。"); 73 } 74 } 75 } 76 } 77 } 78 } 79 } 80 } catch(Exception e) { // エラー(Exception)発生時のみ 81 e.printStackTrace(); 82 } finally { 83 scanner.close(); 84 } 85 } 86} 87
junziさんにプログラムのコードを書いていただきそれを実際に書いて実行してみました。
が、私の考えているプログラムに今一歩足りなくて、、、、
やりたいことは以下の通りです。
わかる方がいらっしゃいましたらお力をお貸しください。
Java
1package practice; 2 3import java.util.Scanner; 4 5public class Practice41 { 6 public static void main(String[]args) { 7 8 //"性別と年齢を入力し、それぞれに対応した入場料金を出力する。 9 //・boyで20歳以上の時は2000円 10 //・boyで20歳未満の時は1800円 11 //・girlで20歳以上の時は1600円 12 //・girlで20歳未満の時は1400円" 13 14 System.out.println("性別を入力してください。"); 15 16 Scanner scanner = new Scanner(System.in); 17 18 String gender = scanner.nextLine(); 19 20 if (gender.matches("boy||男||おとこ||girl||女||おんな")) { 21 System.out.println(gender); 22 } else { 23 System.out.println("正しく入てください。"); 24 } 25 26 //性別以外の文字を入力しても「年齢入力」のコードにいってしまう。 27 //ここで性別以外の文字が入ったら次の命令に行かないようにしたい。 28 //またはもう一度『性別の入力』へループさせたい。 29 30 System.out.println("年齢を入力してください。"); 31 32 String ageStr = scanner.nextLine(); 33 int age = Integer.parseInt(ageStr); 34 scanner.close(); 35 if (gender.equals("boy") || gender.equals("男") || gender.equals("おとこ")) { 36 if (age >= 20) { 37 System.out.println("2000円"); 38 } else { 39 System.out.println("1800円"); 40 } 41 42 //ここからしたのプログラムが動作しない。 43 //「girl、女、おんな」をいれ、年齢をいれたあとに値段の表示がされない。 44 45 46 if (gender.equals("girl") || gender.equals("女") || gender.equals("おんな")) { 47 if (age >= 20) { 48 System.out.println("1600円"); 49 } else { 50 System.out.println("1400円"); 51 } 52 } 53} 54} 55} 56
回答5件
あなたの回答
tips
プレビュー