条件分岐の基本概念
条件分岐は、プログラムが特定の条件に基づいて異なる処理を実行するための制御構造です。条件が真(true)の場合にのみ対応するコードブロックが実行されます。
1. 単純なif文
条件が成立した場合のみ処理を実行し、その後のコードへと続行します。
public class SimpleIfExample {
public static void main(String[] args) {
double examScore = 100.0;
if (examScore == 100.0) {
System.out.println("満点おめでとう!");
}
System.out.println("終了");
}
}
2. if-else構文
条件が真なら最初のブロックを、偽ならelseブロックを実行します。どちらか一方のみが実行されます。
public class IfElseExample {
public static void main(String[] args) {
double result = 99.5;
if (result == 100.0) {
System.out.println("満点!");
} else {
System.out.println("次回頑張ろう");
}
System.out.println("プログラム終了");
}
}
3. 複数条件のif-else if-else
複数の条件を順次評価し、最初に一致した条件に対応するブロックを実行します。
public class MultiConditionExample {
public static void main(String[] args) {
int budget = 8; // 単位:万円
if (budget > 100) {
System.out.println("メルセデス Sクラス");
} else if (budget > 50) {
System.out.println("BMW 5シリーズ");
} else if (budget > 10) {
System.out.println("アウディ A4");
} else {
System.out.println("自転車");
}
System.out.println("終了");
}
}
4. 入れ子のif文(ネスト)
ある条件が満たされた場合に、さらに別の条件をチェックする構造です。
public class NestedIfExample {
public static void main(String[] args) {
int timeSeconds = 9;
char gender = '男';
if (timeSeconds <= 10) {
if (gender == '男') {
System.out.println("男子決勝進出");
} else {
System.out.println("女子決勝進出");
}
} else {
System.out.println("予選敗退");
}
}
}
5. switch文による分岐
等値比較に特化した分岐構造で、int、char、String(Java 7以降)などの型に対応しています。各caseの末尾にbreakを忘れるとフォールスルーが発生します。
public class SwitchExample {
public static void main(String[] args) {
int dayOfWeek = 6;
switch (dayOfWeek) {
case 1:
System.out.println("湖南料理");
break;
case 2:
case 5:
case 6:
System.out.println("四川料理");
break;
case 3:
System.out.println("広東料理");
break;
case 4:
System.out.println("浙江料理");
break;
case 7:
System.out.println("安徽料理");
break;
default:
System.out.println("1〜7の数字を入力してください");
}
System.out.println("終了");
}
}
ローカル変数のスコープ
メソッド内やブロック内で宣言された変数はローカル変数と呼ばれ、使用前に初期化が必要です。その有効範囲(スコープ)は宣言位置から閉じ括弧までです。同じスコープ内で同名の変数を再宣言することはできません。
public class LocalVariableScope {
public static void main(String[] args) {
int value = 100;
System.out.println(value);
if (true) {
int innerValue = 200;
System.out.println(innerValue);
}
// System.out.println(innerValue); // コンパイルエラー:スコープ外
}
}