条件分岐
条件分岐は、プログラムの中で条件に応じて異なる処理を実行するための制御構造です。
Javaでは、主に if 文や else if 文、else 文を使用して条件分岐を行います。
条件式
条件式は、比較演算子や論理演算子を使用して、2つ以上の値を比較し、真(true)または偽(false)を評価します。
int x = 10;
int y = 5;
boolean result = x > y;
上記の条件式は、変数xが変数yよりも大きいかどうかを評価しています。
この場合、xは10でyは5なので、条件式はtrue(真)と評価されます。
条件式で使用される主な比較演算子には以下のようなものがあります:
>:より大きい
<:より小さい
>=:以上
<=:以下
==:等しい
!=:等しくない
また、条件式では論理演算子を使って複数の条件を組み合わせることができます。論理演算子には以下のようなものがあります:
&&:論理積(AND)。両方の条件がtrueの場合にtrueを返す。
||:論理和(OR)。どちらかの条件がtrueの場合にtrueを返す。
!:論理否定(NOT)。条件の結果を反転させる。
詳しい「複数の条件を組み合わせ」については「複数の条件の組み合わせ」で説明しています。
if文
if 文は、指定した条件が真の場合に、そのブロック内のコードを実行します。
if (条件) {
// 条件が真の場合に実行されるコード
}
例
int age = 20;
if (age >= 18) {
System.out.println("成年です");
}
else if文
else if 文は、if 文の条件が偽で、代わりの条件を評価したい場合に使用します。
if (条件1) {
// 条件1が真の場合に実行されるコード
} else if (条件2) {
// 条件1が偽で条件2が真の場合に実行されるコード
}
例
int score = 85;
if (score >= 90) {
System.out.println("優秀です");
} else if (score >= 70) {
System.out.println("良いです");
}
else文
else 文は、すべての条件が偽の場合に実行されるコードを指定します。
if (条件1) {
// 条件1が真の場合に実行されるコード
} else {
// 条件1が偽の場合に実行されるコード
}
例
int temperature = 25;
if (temperature >= 30) {
System.out.println("暑いです");
} else {
System.out.println("涼しいです");
}
複数の条件の組み合わせ
複数の条件を組み合わせることもできます。
条件式の中で、論理演算子(&&、||)を使用します。
if (条件1 && 条件2) {
// 条件1と条件2が両方とも真の場合に実行されるコード
}
例
int height = 180;
int weight = 70;
if (height >= 170 && weight < 80) {
System.out.println("適正体重です");
}
Switch文
Switch文は、Javaの制御文の一つであり、特定の条件に基づいて複数の分岐先の中から1つの処理を実行するために使用されます。
通常、複数のif-else文を使う場合に代替として使われることがあります。
Switch文は、ある式の値に応じて分岐処理を行うことが特徴です。
Switch文の基本的な構文は以下のようになります
// switch文の使用例
switch (式) {
case 値1:
// 式の結果が値1と一致する場合に実行される処理
break;
case 値2:
// 式の結果が値2と一致する場合に実行される処理
break;
// 他にもcaseを追加できる
default:
// どのcaseにも一致しない場合に実行される処理
break;
}
【Switch文の動作】
Switch文は、式の評価結果がcaseの値と一致した場合、そのcaseの処理を実行します。
一致するcaseがない場合、defaultブロックの処理が実行されます。
各caseの処理が終了すると、break文がない場合、そのまま次のcaseの処理に進みます。
break文を使うことで、該当するcaseの処理が終了した後、switch文から抜け出すことができます。
【注意点】
Switch文の式として使用できるデータ型は、byte, short, char, intのプリミティブ型および、enum型、String型です。
各caseの値は一意でなければなりません。重複した値を使うことはできません。
defaultブロックは任意であり、必ず記述する必要はありません。
break文を忘れると、該当するcase以降の処理も実行されることに注意してください。
【サンプルコード】
以下は、Switch文を使用して曜日を判定するサンプルコードです
// メインクラス(プログラムのエントリーポイント)
public class Main {
public static void main(String[] args) {
// 変数の宣言と初期化
int dayOfWeek = 3;
String dayName;
// switch文で曜日を判定し、dayNameに代入
switch (dayOfWeek) {
case 1:
dayName = "Sunday";
break;
case 2:
dayName = "Monday";
break;
case 3:
dayName = "Tuesday";
break;
case 4:
dayName = "Wednesday";
break;
case 5:
dayName = "Thursday";
break;
case 6:
dayName = "Friday";
break;
case 7:
dayName = "Saturday";
break;
default:
dayName = "Invalid day";
break;
}
// 結果を表示
System.out.println("Today is " + dayName);
}
}
このコードでは、dayOfWeek変数の値に応じて曜日を判定し、対応する曜日の名前をdayName変数に格納しています。
問題
問題1:以下のプログラムを完成させてください
public class Main {
public static void main(String[] args) {
// 問題1: scoreが80以上の場合、「合格」と出力し、それ以外の場合は「不合格」と出力する条件分岐を作成してください。
int score = 75;
// 条件分岐のコードをここに記述してください
}
}
public class Main {
public static void main(String[] args) {
// 問題1: scoreが80以上の場合、「合格」と出力し、それ以外の場合は「不合格」と出力する条件分岐を作成してください。
int score = 75;
// 条件分岐のコードをここに記述してください
}
}
解答
public class Main {
public static void main(String[] args) {
// 問題1: scoreが80以上の場合、「合格」と出力し、それ以外の場合は「不合格」と出力する条件分岐を作成してください。
int score = 75;
if (score >= 80) {
System.out.println("合格");
} else {
System.out.println("不合格");
}
}
}
問題2:以下のプログラムを完成させてください
public class Main {
public static void main(String[] args) {
// 問題2: numが正の数の場合は「正の数」、負の数の場合は「負の数」、0の場合は「0」と出力する条件分岐を作成してください。
int num = -5;
// 条件分岐のコードをここに記述してください
}
}
public class Main {
public static void main(String[] args) {
// 問題2: numが正の数の場合は「正の数」、負の数の場合は「負の数」、0の場合は「0」と出力する条件分岐を作成してください。
int num = -5;
// 条件分岐のコードをここに記述してください
}
}
解答
public class Main {
public static void main(String[] args) {
// 問題2: numが正の数の場合は「正の数」、負の数の場合は「負の数」、0の場合は「0」と出力する条件分岐を作成してください。
int num = -5;
if (num > 0) {
System.out.println("正の数");
} else if (num < 0) {
System.out.println("負の数");
} else {
System.out.println("0");
}
}
}
問題3:以下のプログラムを完成させてください
public class Main {
public static void main(String[] args) {
// 問題3: ageが18未満の場合は「未成年」、18歳以上かつ65歳未満の場合は「成人」、65歳以上の場合は「高齢者」と出力する条件分岐を作成してください。
int age = 30;
// 条件分岐のコードをここに記述してください
}
}
public class Main {
public static void main(String[] args) {
// 問題3: ageが18未満の場合は「未成年」、18歳以上かつ65歳未満の場合は「成人」、65歳以上の場合は「高齢者」と出力する条件分岐を作成してください。
int age = 30;
// 条件分岐のコードをここに記述してください
}
}
解答
public class Main {
public static void main(String[] args) {
// 問題3: ageが18未満の場合は「未成年」、18歳以上かつ65歳未満の場合は「成人」、65歳以上の場合は「高齢者」と出力する条件分岐を作成してください。
int age = 30;
if (age < 18) {
System.out.println("未成年");
} else if (age >= 18 && age < 65) {
System.out.println("成人");
} else {
System.out.println("高齢者");
}
}
}
問題4:以下のプログラムを完成させてください
public class Main {
public static void main(String[] args) {
// 問題4: numが偶数の場合は「偶数」、奇数の場合は「奇数」と出力する条件分岐を作成してください。
int num = 9;
// 条件分岐のコードをここに記述してください
}
}
public class Main {
public static void main(String[] args) {
// 問題4: numが偶数の場合は「偶数」、奇数の場合は「奇数」と出力する条件分岐を作成してください。
int num = 9;
// 条件分岐のコードをここに記述してください
}
}
解答
public class Main {
public static void main(String[] args) {
// 問題4: numが偶数の場合は「偶数」、奇数の場合は「奇数」と出力する条件分岐を作成してください。
int num = 9;
if (num % 2 == 0) {
System.out.println("偶数");
} else {
System.out.println("奇数");
}
}
}
問題5:以下のプログラムを完成させてください
public class Main {
public static void main(String[] args) {
// 問題5: 年齢と性別によって、以下のようなメッセージを出力する条件分岐を作成してください。
// 年齢が20歳未満の場合は「未成年です。」
// 年齢が20歳以上かつ性別が「男性」の場合は「成人の男性です。」
// 年齢が20歳以上かつ性別が「女性」の場合は「成人の女性です。」
int age = 25;
String gender = "女性";
// 条件分岐のコードをここに記述してください
}
}
public class Main {
public static void main(String[] args) {
// 問題5: 年齢と性別によって、以下のようなメッセージを出力する条件分岐を作成してください。
// 年齢が20歳未満の場合は「未成年です。」
// 年齢が20歳以上かつ性別が「男性」の場合は「成人の男性です。」
// 年齢が20歳以上かつ性別が「女性」の場合は「成人の女性です。」
int age = 25;
String gender = "女性";
// 条件分岐のコードをここに記述してください
}
}
解答
public class Main {
public static void main(String[] args) {
// 問題5: 年齢と性別によって、以下のようなメッセージを出力する条件分岐を作成してください。
// 年齢が20歳未満の場合は「未成年です。」
// 年齢が20歳以上かつ性別が「男性」の場合は「成人の男性です。」
// 年齢が20歳以上かつ性別が「女性」の場合は「成人の女性です。」
int age = 25;
String gender = "女性";
if (age < 20) {
System.out.println("未成年です。");
} else if (age >= 20 && gender.equals("男性")) {
System.out.println("成人の男性です。");
} else if (age >= 20 && gender.equals("女性")) {
System.out.println("成人の女性です。");
} else {
System.out.println("条件に該当する情報がありません。");
}
}
}
問題6:以下のプログラムは、1から5までの数字を入力すると、それぞれの数字に対応する果物名を出力するプログラムです。
しかし、現在のコードでは数字が1から5の範囲外の場合には何も表示されません。
switch文を使用して、範囲外の数字が入力された場合には「不明な果物」と表示するようにプログラムを修正してください。
// FruitSelectorクラスの定義
import java.util.Scanner;
public class Main {
// メインメソッド
public static void main(String[] args) {
// スキャナーオブジェクトを生成
Scanner scanner = new Scanner(System.in);
System.out.println("1から5までの数字を入力してください:");
int number = scanner.nextInt();
String fruitName;
// switch文で数字に対応する果物を選択
switch (number) {
case 1:
fruitName = "りんご";
break;
case 2:
fruitName = "みかん";
break;
case 3:
fruitName = "バナナ";
break;
case 4:
fruitName = "ぶどう";
break;
case 5:
fruitName = "さくらんぼ";
break;
// ここに範囲外の数字に対応する処理を追加する
}
// 結果を表示
System.out.println("選んだ果物は:" + fruitName);
}
}
しかし、現在のコードでは数字が1から5の範囲外の場合には何も表示されません。
switch文を使用して、範囲外の数字が入力された場合には「不明な果物」と表示するようにプログラムを修正してください。
// FruitSelectorクラスの定義
import java.util.Scanner;
public class Main {
// メインメソッド
public static void main(String[] args) {
// スキャナーオブジェクトを生成
Scanner scanner = new Scanner(System.in);
System.out.println("1から5までの数字を入力してください:");
int number = scanner.nextInt();
String fruitName;
// switch文で数字に対応する果物を選択
switch (number) {
case 1:
fruitName = "りんご";
break;
case 2:
fruitName = "みかん";
break;
case 3:
fruitName = "バナナ";
break;
case 4:
fruitName = "ぶどう";
break;
case 5:
fruitName = "さくらんぼ";
break;
// ここに範囲外の数字に対応する処理を追加する
}
// 結果を表示
System.out.println("選んだ果物は:" + fruitName);
}
}
解答
// FruitSelectorクラスの定義
import java.util.Scanner;
public class Main {
// メインメソッド
public static void main(String[] args) {
// スキャナーオブジェクトを生成
Scanner scanner = new Scanner(System.in);
System.out.println("1から5までの数字を入力してください:");
int number = scanner.nextInt();
String fruitName;
// switch文で数字に対応する果物を選択
switch (number) {
case 1:
fruitName = "りんご";
break;
case 2:
fruitName = "みかん";
break;
case 3:
fruitName = "バナナ";
break;
case 4:
fruitName = "ぶどう";
break;
case 5:
fruitName = "さくらんぼ";
break;
// ここに範囲外の数字に対応する処理を追加する
default:
fruitName = "不明な果物";
break;
}
// 結果を表示
System.out.println("選んだ果物は:" + fruitName);
}
}