こんにちは。ECF Tech ブログ担当 Michiharu.Tです。
Javaプログラミング向け練習問題、テーマは「分岐構文」第2回です。論理演算子や入れ子の構造なども含めた練習問題となっています。ぜひ、学習にお役立てください。 一般的なJavaの学習順序に沿ったテーマの一覧(※随時追加)は、こちらのリンクよりご確認頂けます。Javaのトピックスです。主に初心者向けにプログラミング学習ネタを提供していきます。
解説動画
2023/01/07 解説動画を掲載しました。
問題編
Q001
問題
提供コード中の①~②を下の仕様に基づいて書き換え、実行結果を得てください。(仕様)
- ① aが5、またはbが7ならtrue
- ② aが5、なおかつbが7ならtrue
提供コード
public class Quiz001 { public static void main(String[] args){ int a = 5; int b = 8; if (①) { System.out.println("aは5、またはbは7です。"); } if(②){ System.out.println("aは5、なおかつbは7です。"); } } }
実行結果
aとbの値を下のとおりに書き換えてコンパイルし、それぞれの
実行結果を得てください。
(ケース1)
a = 5
b = 8
の場合
aは5、またはbは7です。
(ケース2)
a = 5
b = 7
の場合
aは5、またはbは7です。 aは5、なおかつbは7です。
public class Quiz001 { public static void main(String[] args){ int a = 5; int b = 7; if (a == 5 || b == 7) { System.out.println("aは5、またはbは7です。"); } if(a == 5 && b == 7){ System.out.println("aは5、なおかつbは7です。"); } } }
解説
論理演算子の問題です。||
はまたは、&&
はかつの意味になります。
Q002
問題
提供コードをif文のネストを用いて書き換えましょう。
(ヒント)
同じ条件式は1回だけ使用するようにしましょう。
提供コード
public class Quiz002 { public static void main(String[] args) { int age = 18; boolean parent = false; if (age <= 12 && !parent) { System.out.println("ご参加頂けません"); } else if (age <= 12 && parent) { System.out.println("ご参加頂けます"); } else { System.out.println("ご参加頂けます"); } } }
実行結果
ageとparentの値を下のとおりに書き換えてコンパイルし、
それぞれの実行結果を得てください。
(ケース1)
age = 18
parent = false
ご参加頂けます
(ケース2)
age = 12
parent = false
ご参加頂けません
(ケース3)
age = 12
parent = true
ご参加頂けます
public class Quiz002 { public static void main(String[] args) { int age = 20; boolean parent = false; if (age <= 12){ if (parent) { System.out.println("ご参加頂けます"); } else { System.out.println("ご参加頂けません"); } } else { System.out.println("ご参加頂けます"); } } }
解説
boolean型の変数はif文の条件式に直接使用できます。
Q003
問題
提供コード中の①を下の仕様に基づいて書き換え、実行結果を得てください。(仕様)
- ① 変数
str
に入っている文字列がhello
ならtrue
となる条件式を作成します。
提供コード
import java.util.Scanner; public class Quiz003 { public static void main(String[] args) { System.out.print("合言葉は?:"); //キーボードからの文字列の入力を待ちます。 String str = (new Scanner(System.in)).nextLine(); if (①) { System.out.println("おはいりください"); } else { System.out.println("合言葉が違います"); } } }
実行結果
それぞれのケースで実行結果を得てください。
(ケース1)
実行し、「hello」と入力してEnterキーを押します。
合言葉は?:hello おはいりください
(ケース2)
実行し、「bye」と入力してEnterキーを押します。
合言葉は?:bye 合言葉が違います
import java.util.Scanner; public class Quiz003 { public static void main(String[] args) { System.out.print("合言葉は?:"); //キーボードからの文字列の入力を待ちます。 String str = (new Scanner(System.in)).nextLine(); if (str.equals("hello")) { System.out.println("おはいりください"); } else { System.out.println("合言葉が違います"); } } }
解説
String型の値比較は==
では行なうことができません。詳しい解説は割愛しますが、比較したい文字列①②がある場合、①.equals(②)
が基本的な形式となります。これは①の持つメソッドequalsを呼び出す記述です。
Q004
問題
提供コード中の①②を下の仕様に基づいて書き換え、実行結果を得てください。(仕様)
- ① aが5以上10以下、なおかつbが8ならtrueとなる条件式を記述します。
- ② bが3,6,9のいずれでもなければtrueとなる条件式を記述します。
提供コード
public class Quiz004 { public static void main(String[] args) { int a = 5; int b = 8; if (①) { System.out.println("条件1に該当"); } if(②){ System.out.println("条件2に該当"); } } }
実行結果
aとbの値を下のとおりに書き換えてコンパイルし、 それぞれの実行結果を得てください。(ケース1)
a = 7
b = 8
条件1に該当 条件2に該当(ケース2)
a = 10
b = 9
(表示なし)(ケース3)
a = 12
b = 8
条件2に該当
public class Quiz004 { public static void main(String[] args) { int a = 5; int b = 9; if (a >= 5 && a <= 10 && b == 8) { System.out.println("条件1に該当"); } if( b != 3 && b != 6 && b != 9 ){ System.out.println("条件2に該当"); } } }
解説
数値が特定の値の範囲であることを条件にするには、2つの条件式を用います。
Q005
問題
提供コードを下の仕様に基づいて追記し、実行結果を得てください。(仕様)
- 映画館の入場料を求めるプログラムです。
- 変数
age
は年齢を表します。 - 変数
members
は会員かどうかを表し、会員である場合はtrue
です。 - 20歳以上の会員は1100円、非会員は1500円です。
- 20歳未満の会員は500円、非会員は800円です。
age
とmembers
の値に基づいて、入場料金を求めるプログラムを作成してください。
提供コード
public class Quiz005 { public static void main(String[] args) { int age = 15; boolean members = true; int fee = 0; //ここにプログラムを追加します。 System.out.println("料金は" + fee + "円です"); } }
実行結果
ageとmembersの値を下のとおりに書き換えてコンパイルし、
それぞれの実行結果を得てください。
(ケース1)age = 20
members = true
の場合
料金は1100円です
(ケース2)age = 20
members = false
の場合
料金は1500円です
(ケース3)age = 19
members = true
の場合
料金は500円です
(ケース4)age = 19
members = false
の場合
料金は800円です
public class Quiz005 { public static void main(String[] args) { int age = 19; boolean members = false; int fee = 0; if (age >= 20) { if (members) { fee = 1100; } else { fee = 1500; } } else { if (members) { fee = 500; } else { fee = 800; } } System.out.println("料金は" + fee + "円です"); } }
Q006
問題
提供コードのコメント部分に、変数a,b,cの3つの中から最大値を求めるプログラムを追加してください。
提供コード
public class Quiz006{ public static void main(String[] args){ int a = 2; int b = 4; int c = 6; //ここからプログラムを追加します。 } }
実行結果
変数a,b,cの値を下のとおりに書き換えてコンパイルし、 それぞれの実行結果を得てください。
(ケース1) a=6,b=4,c=2の場合
aが最大です。
(ケース2) a=4,b=6,c=2の場合
bが最大です。
(ケース2) a=2,b=4,c=6の場合
cが最大です。
public class Quiz006{ public static void main(String[] args){ int a = 2; int b = 4; int c = 6; //ここからプログラムを書きます。 if(a > b){ if( a > c ){ System.out.println("aが最大です。"); } else { System.out.println("cが最大です。"); } } else { if( b > c ){ System.out.println("bが最大です。"); } else { System.out.println("cが最大です。"); } } } }
おわりに
いかがでしたでしょうか。初学者の方は本記事のプログラムが独力で書けるところまで行ければ、次のテーマに進むという具合でいいかなと思います。ひきつづき単元ごとに問題を徐々に増やしていきたいと思っていますので、よろしければぜひご活用ください。合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。