値によってプログラムの動作を変更することを条件分岐と言います。Java で条件分岐を行うときには、制御構文である if 文を使用します。
ここでは if 文の使い方と、より複雑な条件分岐を実現する if ... else if ... else 構文について説明します。
if 文の使い方
if 文は以下のように記述します。
1 2 3 |
if(条件式) { 実行する処理 } |
if 文の括弧 { } で囲まれた処理は、条件式が真のときにだけ実行されます。もし条件式が偽の場合は括弧内の処理は実行されません。
具体的なプログラムを用いて説明します。
1 2 3 4 5 6 7 8 |
class Sample { public static void main(String args[]) { int n = 15; if (n > 10) { System.out.println(n + "は10より大きい"); // 15は10より大きい } } } |
まず、if 文の n > 10 の条件式が評価され n は 15 であるから、 この条件式は真となり if 文の { } 内の処理が実行され「15は10より大きい」という文字列が表示されます。
もし n の値を 10 以下に変更すると、条件式は偽となり if 文の { } 内の処理は実行されず、何も表示されません。
このように if 文を使うことで値によってプログラムの動作を変えることができます。
if ... else if ... else 構文
上のプログラムでは条件式が真のときだけ実行される if 文について説明しましたが、if ... else if ... else の構文を使うことで、より複雑な条件分岐を実現することができます。
1 2 3 4 5 6 7 8 9 |
if(条件式1) { 条件式1が真のときに実行される処理 } else if (条件式2) { 条件式2が真のときに実行される処理 } else if (条件式3) { 条件式3が真のときに実行される処理 } else { すべての条件式が偽のときに実行される処理 } |
この構文では、最初の条件式1から順々に条件式が評価されていき、真のときにその if 文に対応した {} 内の処理のみ実行されます。この場合、もし条件式1が真のときは、「条件式1が真のときに実行される処理」のみ実行され、それ以降の処理は実行されません。
また、else if 文はいくつでも記述することができ、else if, else 文は省略することも可能です。
以下は if, else if, else を使用した例です。
1 2 3 4 5 6 7 8 9 10 11 12 |
class Sample2 { public static void main(String args[]) { int n = 5; if (n > 10) { System.out.println(n + "は10より大きい"); } else if (n == 10) { System.out.println(n + "は10と等しい"); } else { System.out.println(n + "は10より小さい"); // 5は10より小さい } } } |
上のプログラムではまず、最初に n > 10 が評価され、 n は 5 であるから偽となります。次に、条件式 n == 10 が評価されます。 n == 10 も偽となり、すべての条件式が偽となり else の後の { } 内のコードが実行され「5は10より小さい」と表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
class Sample2 { public static void main(String args[]) { int n = 10; if (n > 10) { System.out.println(n + "は10より大きい"); } else if (n == 10) { System.out.println(n + "は10と等しい"); // 10は10と等しい } else { System.out.println(n + "は10より小さい"); } } } |
n を 10 に変更した場合は、先ほどと同様に最初に n > 10 が評価され、この条件式は偽となるので、 n == 10 の条件式が評価されます。この条件式は真となるので、この場合は else if の後の { } 内のコードが実行され「10は10と等しい」と表示されます。