条件文
条件文により、プログラムは異なる条件に基づいて異なるコードを実行できます。このレッスンでは、Javaの条件ロジックを学びます。
if文
if文は最も基本的な条件チェックです。
構文
JAVA
if (条件) {
// 条件がtrueの場合に実行
}
例:簡単なif
JAVA
public class IfDemo {
public static void main(String[] args) {
int age = 20;
if (age >= 18) {
System.out.println("成人です");
}
}
}
if-else文
条件がfalseの場合、elseブロックのコードが実行されます。
構文
JAVA
if (条件) {
// 条件がtrueの場合に実行
} else {
// 条件がfalseの場合に実行
}
例:if-else
JAVA
public class IfElseDemo {
public static void main(String[] args) {
int age = 15;
if (age >= 18) {
System.out.println("成人です");
} else {
System.out.println("未成年です");
}
}
}
if-else if-else文
複数の条件チェックに使用されます。
構文
JAVA
if (条件1) {
// 条件1がtrueの場合に実行
} else if (条件2) {
// 条件2がtrueの場合に実行
} else if (条件3) {
// 条件3がtrueの場合に実行
} else {
// 上記の条件がすべて満たされない場合に実行
}
例:成績計算
JAVA
public class GradeDemo {
public static void main(String[] args) {
int score = 85;
if (score >= 90) {
System.out.println("優秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 70) {
System.out.println("平均");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}
}
💡 注意: 条件は上から下に評価されます。条件がtrueになると、対応するコードが実行され、それ以降の条件はチェックされません。
ネストされたif
if文は互いにネストすることができます。
例:ネストされたif
JAVA
public class NestedIfDemo {
public static void main(String[] args) {
int age = 25;
boolean hasID = true;
if (age >= 18) {
if (hasID) {
System.out.println("入場許可");
} else {
System.out.println("IDを提示してください");
}
} else {
System.out.println("未成年者は入場できません");
}
}
}
switch文
switch文は、変数を複数の固定値と照合するのに最適です。
構文
JAVA
switch (変数) {
case 値1:
// 変数が値1と等しい場合に実行
break;
case 値2:
// 変数が値2と等しい場合に実行
break;
default:
// どのケースにも一致しない場合に実行
}
例:曜日
JAVA
public class SwitchDemo {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("月曜日");
break;
case 2:
System.out.println("火曜日");
break;
case 3:
System.out.println("水曜日");
break;
case 4:
System.out.println("木曜日");
break;
case 5:
System.out.println("金曜日");
break;
case 6:
System.out.println("土曜日");
break;
case 7:
System.out.println("日曜日");
break;
default:
System.out.println("無効な日");
}
}
}
⚠️ breakの目的: breakがないと、プログラムは次のcaseの実行を継続します。これは「フォールスルー」と呼ばれます。
フォールスルーの使用
フォールスルーは、週末のチェックなど、場合によっては便利です:
JAVA
public class SwitchFallThrough {
public static void main(String[] args) {
int day = 6;
String type;
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
type = "平日";
break;
case 6:
case 7:
type = "週末";
break;
default:
type = "無効";
}
System.out.println(day + "日目は" + type);
}
}
拡張switch(Java 14+)
Java 14では、より簡潔な拡張switch構文が導入されました:
JAVA
public class EnhancedSwitch {
public static void main(String[] args) {
int day = 3;
String dayName = switch (day) {
case 1 -> "月曜日";
case 2 -> "火曜日";
case 3 -> "水曜日";
case 4 -> "木曜日";
case 5 -> "金曜日";
case 6 -> "土曜日";
case 7 -> "日曜日";
default -> "無効";
};
System.out.println(dayName); // 水曜日
}
}
Scannerによるユーザー入力
Scannerクラスはユーザーからのキーボード入力を取得できます。
使用手順
JAVA
// 1. Scannerクラスをインポート
import java.util.Scanner;
// 2. Scannerオブジェクトを作成
Scanner scanner = new Scanner(System.in);
// 3. 入力を読み取る
int num = scanner.nextInt(); // 整数を読み取る
double d = scanner.nextDouble(); // 浮動小数点数を読み取る
String s = scanner.nextLine(); // テキスト行を読み取る
// 4. scannerを閉じる
scanner.close();
例:ユーザー入力チェック
JAVA
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("年齢を入力してください:");
int age = scanner.nextInt();
if (age >= 18) {
System.out.println("成人です");
} else {
System.out.println("未成年です");
}
scanner.close();
}
}
例:簡単な電卓
JAVA
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("最初の数値を入力:");
double num1 = scanner.nextDouble();
System.out.print("演算子を入力(+ - * /):");
char operator = scanner.next().charAt(0);
System.out.print("2番目の数値を入力:");
double num2 = scanner.nextDouble();
double result;
switch (operator) {
case '+':
result = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + result);
break;
case '-':
result = num1 - num2;
System.out.println(num1 + " - " + num2 + " = " + result);
break;
case '*':
result = num1 * num2;
System.out.println(num1 + " * " + num2 + " = " + result);
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
System.out.println(num1 + " / " + num2 + " = " + result);
} else {
System.out.println("エラー:ゼロで割ることはできません");
}
break;
default:
System.out.println("エラー:サポートされていない演算子");
}
scanner.close();
}
}
❓ よくある質問
Q if条件には括弧が必要ですか?
A はい、条件は括弧で囲む必要があります。単一の文でも、コードブロックに波括弧を使用することをお勧めします。
Q switchはどの型をサポートしていますか?
A switchはbyte、short、int、char、String(Java 7+)、enumをサポートしています。long、float、doubleはサポートしていません。
Q breakを省略できますか?
A はい、ただしフォールスルーが発生します。フォールスルーが意図的な場合は、説明のコメントを追加してください。
📖 まとめ
- ifは単一条件チェック用、if-elseは2つの選択肢用、if-else if-elseは複数の選択肢用
- switchは変数を複数の固定値と照合するのに最適
- breakはswitchのフォールスルーを防ぐ
- Scannerはユーザーのキーボード入力を取得できる
📝 演習
- うるう年: 年を入力し、うるう年かどうかを判定
- 成績計算: 点数(0-100)を入力し、成績(優秀/良好/平均/及格/不及格)を出力
- 電卓: Scannerを使用して簡単な電卓を構築
次のレッスン
次のレッスンでは、ループを学びます — プログラムに特定の操作を繰り返させます。



