Java制御文(Control statement)の条件文(Conditional statement)
条件文(Conditional statement)
Javaには、if文とswitch文という2つの条件文があります。これらの文を使うことで、実行中に条件に基づいてプログラムの実行フローを制御できます。
if ~ else文
if文は、条件に応じて2つの文のうちどちらか一方を実行する条件文です。
if (条件式)
実行文1;
else
実行文2;
if文は条件式の内容に応じてtrueまたはfalseを返します。else文は必要な場合に記述し、不要な場合は省略できます。
package com.devkuma.tutorial.control.statement;
public class IfElse {
public static void main(String[] args) {
int a = 0;
if (a == 1) {
System.out.println("a는 1이다.");
} else {
System.out.println("a는 1 아니다.");
}
}
}
if ~ else if文
if ~ else if文は、if文を使って多重選択を可能にします。
if (条件式1)
実行文1;
else if (条件式2)
実行文2;
...
else
実行文3;
Javaのすべての構文は、上から下へ順番に実行されます。最初の条件式が真と評価されると、その文を実行した後、if文を抜けます。最初の条件節が偽と評価されると、続けてelse if条件節を評価して実行します。
package com.devkuma.tutorial.control.statement;
public class IfElseIf {
public static void main(String[] args) {
int month = 3;
String season = null;
if (month == 1) {
season = "winter";
} else if (month == 2) {
season = "winter";
} else if (month == 3) {
season = "spring";
} else if (month == 4) {
season = "spring";
} else if (month == 5) {
season = "spring";
} else if (month == 6) {
season = "summer";
} else if (month == 7) {
season = "summer";
} else if (month == 8) {
season = "summer";
} else if (month == 9) {
season = "autumn";
} else if (month == 10) {
season = "autumn";
} else if (month == 11) {
season = "autumn";
} else if (month == 12) {
season = "winter";
}
System.out.println("month=" + month + ", season=" + season);
}
}
実行結果は次のとおりです。
month=3, season=spring
switch ~ case文
switch ~ case文は多重選択を可能にします。
switch (式) {
case 値1:
実行文1;
break;
case 値2:
実行文2;
break;
.....
case 値n:
実行文n;
break;
default:
デフォルト実行文;
}
各case文のbreak文は任意です。breakを省略すると、実行はすぐ下のcase文へ移ります。これを利用して、複数のcase節を一つの実行文にまとめることができます。
package com.devkuma.tutorial.control.statement;
public class SwitchCase1 {
public static void main(String[] args) {
int a = 257;
int result = a % 3;
switch (result) {
case 1:
System.out.println(a + "는 3의 배수가 아니다.");
break;
case 2:
System.out.println(a + "는 3의 배수가 아니다.");
break;
default:
System.out.println(a + "는 3의 배수이다.");
break;
}
}
}
各case文のbreak文は任意です。break文を省略すると、実行はすぐ下のcase文へ移ります。したがって、上の例は次のように変更できます。
package com.devkuma.tutorial.control.statement;
public class SwitchCase2 {
public static void main(String[] args) {
int a = 257;
int result = a % 3;
switch (result) {
case 1:
case 2:
System.out.println(a + "는 3의 배수가 아니다.");
break;
default:
System.out.println(a + "는 3의 배수이다.");
break;
}
}
}
case文の実行文は、breakに出会うか、最後のcase文またはdefault文に到達するまで実行され続けます。
上のif ~ else文の例は、次のように変更できます。
package com.devkuma.tutorial.control.statement;
public class SwitchCase3 {
public static void main(String[] args) {
int month = 3;
String season = null;
switch (month) {
case 1:
case 2:
case 12:
season = "winter";
break;
case 3:
case 4:
case 5:
season = "spring";
break;
case 6:
case 7:
case 8:
season = "summer";
break;
case 9:
case 10:
case 11:
season = "autumn";
break;
default:
break;
}
System.out.println("month=" + month + ", season=" + season);
}
}
ネストされたswitch文
switch文の中に別のswitch文を含めることができます。ネストされたswitch文では、同じ値を持つcase文を自由に使用できます。
package com.devkuma.tutorial.control.statement;
public class SwitchCase4 {
public static void main(String[] args) {
int a = 1;
int b = 2;
switch (a) {
case 1:
switch (b) {
case 0:
System.out.println("a=1, b=0");
case 1:
System.out.println("a=1, b=1");
}
break;
case 2:
System.out.println("a=2");
break;
default:
break;
}
}
}