「もし宿に空室がなければ、満室と表示する」など「もし○○なら、△△する」という表現にはif文を使用すればよかった。では、「もし○○なら、△△する。そうでない場合、□□する」という場合にはどうすればいいか?
Javaではif-else文を使えば、これを表現出来る。このページでは条件を2分岐させるJavaのifとelseについてお伝えしよう。
目次
if-else文の基本
if-else文は次のようなケースで使う。
コンビニに行って、おでんがセールだったらおでんを買う、セールではなければおにぎりを買う、というような場合だ。
まさしく「もし○○なら、△△する。そうでない場合、□□する」という状態になる。
これを日本語的に書くと、
↓
もし、おでんがセール中なら、おでんを買う!
↓
セール中でなければ、おにぎりを買う!
↓
帰る。
となる。
これをプログラミングで表現するのが「if-else文」の役割だ。次のようになる。
if(おでんがセール中なら){
おでんを買う!;
} else {
おにぎりを買う!;
}
帰る。
Javaだけではなく、どのようなプログラミング言語でも同じようにif-else文のようなものは用意されている。必ず使うからだ。
Javaのif-elseの使い方
Javaのif-else文は、条件によって文の実行を制御することができる。また、ふたつの文があれば、どちらかを選択して実行することもできる。両方の文を実行することはできない。
if-else文ははじめに式を確認して、それがtrueならifのすぐ下の文が、falseならelseの下の文が実行される。
書き方の基本はこうだ。
if ( 式 ) {
文;
} else {
文;
}
式の値によって次のように文は実行される。
- もし式の値がtrueならば文が実行される。文の実行が問題なく実行されれば、elseのブロック部分({}の中のこと)は読まない
- もし式の値がfalseならばifの下の文は実行されず、elseの下のブロックが実行される
では、この点をサンプルプログラムで確認してみよう。
Java if-else文のサンプルプログラム
if-else文の典型的なサンプルだ。確認してみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class IfThenElseOneStatementInBlock { public static void main (String[] args){ int number = 2;//[1] if (number == 1) {//[2] System.out.println("[3] number = 1"); } else {//[4] System.out.println("[5] else - number = 1"); } if (number == 2) {//[6] System.out.println("[7] number = 2"); } else {//[8] System.out.println("[9] else - number = 2"); } if (number == 3) {//[10] System.out.println("[11] number = 3"); } else {//[12] System.out.println("[13] else - number = 3"); } } } |
実行結果
1 2 3 |
[5] else - number = 1 [7] number = 2 [13] else - number = 3 |
式がtrueであれば、式に続くブロック内の文が実行されていることがわかる。これは、numberが2の場合である。
もし式がfalseであれば、elseに続くブロック内の文が実行される。これは、numberが1と3の場合だ。
サンプルプログラムの説明
それでは一応、簡単にプログラムの解説をしておこう。
- [1]変数numberを宣言し、初期値の2を代入する。
- [2][3] もしnumberが1ならば、「number = 1 」を表示する。
- [4][5] そうでなければ、「else - number = 1」を表示する。
- [6][7] もしnumberが2ならば、「number = 2 」を表示する。
- [8][9] そうでなければ、「else - number = 2」を表示する。
- [10][11] もしnumberが3ならば、「number = 3 」を表示する。
- [12][13] そうでなければ、「else - number = 3」を表示する。
ブロックを持たないサンプルプログラム
if文と同じように、ブロック({}←これ)がないif-else文も書くことができる。ブロックのありなしの違いについては、下記でご説明している。
基本的には{}で囲むようにしよう。Pythonなどの特殊な他の言語以外では、{}をきちんと書いた方が見やすくなる場合が多い。
このサンプルプログラムは、実行される文が式とelseに直接続く。
式がtrueであれば、式に続く文が実行される。これは、numberが2の場合である。もし式がfalseであれば、elseに続く文が実行される。これは、numberが1と3の場合である。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class IfThenElseOneStatementWithoutBlock { public static void main (String[] args){ int number = 2;//[1] if (number == 1)//[2] System.out.println("[3] number = 1"); else//[4] System.out.println("[5] else - number = 1"); if (number == 2)//[6] System.out.println("[7] number = 2"); else//[8] System.out.println("[9] else - number = 2"); if (number == 3)//[10] System.out.println("[11] number = 3"); else//[12] System.out.println("[13] else - number = 3"); } } |
実行結果
1 2 3 |
[5] else - number = 1 [7] number = 2 [13] else - number = 3 |
サンプルプログラムの説明
こちらも一応、細かく。
- [1]変数numberを宣言し、初期値の2を代入する。
- [2][3] もしnumberが1ならば、「number = 1 」を表示する。
- [4][5] そうでなければ、「else - number = 1」を表示する。
- [6][7] もしnumberが2ならば、「number = 2 」を表示する。
- [8][9] そうでなければ、「else - number = 2」を表示する。
- [10][11] もしnumberが3ならば、「number = 3 」を表示する。
- [12][13] そうでなければ、「else - number = 2」を表示する。
ブロックを持たないふたつの文のサンプルプログラム
このサンプルプログラムは、実行されるふたつの文が式とelseに続く。つまり、if-else文が実行する文を含むブロックを持っていない。
式に続く最初の文は条件によって表示されたり、表示されなかったりする。しかし、式に続く2番目の文を書くとelseがエラーになる。If-else文でブロックがない場合は、一文しか書けないのだ。
1 2 3 4 5 6 |
if (number == 1) System.out.println("[3]number = 1"); System.out.println("[3]NUMBER = 1"); ←2番目の文 else ←この行がエラーになる System.out.println("[5]else - number = 1"); System.out.println("[6]NUMBER = 1"); |
elseに続く最初の文は条件によって表示されたり、表示されなかったりする。しかし、2番目の文は条件に関係なく表示される。
式がtrueであれば、式に続く文が実行される。これは、numberが2の場合である。もし式がfalseであれば、elseに続く文が実行される。これは、numberが1と3の場合である。2番目の文はif-then文には含まれないので、大文字の「NUMBER = 番号」の表示はすべて行われる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class IfThenElseTwoStatementWithoutBlock { public static void main (String[] args){ int number = 2;//[1] if (number == 1)//[2] System.out.println("[3]number = 1"); else//[4] System.out.println("[5]else - number = 1"); System.out.println("[6]NUMBER = 1"); if (number == 2)//[7] System.out.println("[8]number = 2"); else//[9] System.out.println("[10]else - number = 2"); System.out.println("[11]NUMBER = 2"); if (number == 3)//[12] System.out.println("[13]number = 3"); else//[14] System.out.println("[15]else - number = 3"); System.out.println("[16]NUMBER = 3"); } } |
実行結果
1 2 3 4 5 6 |
[5]else - number = 1 [6]NUMBER = 1 [8]number = 2 [11]NUMBER = 2 [15]else - number = 3 [16]NUMBER = 3 |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1 [1]変数numberを宣言し、初期値の2を代入する。
- [2][3] もしnumberが1ならば、「number = 1 」を表示する。
- [4][5] それ以外ならば、「else - number = 1 」を表示する。
- [6] 「NUMBER = 1」を表示する。
- [7][8] もしnumberが2ならば、「number = 2 」を表示する。
- [9][10] それ以外ならば、「else - number = 2 」を表示する。
- [11] 「NUMBER = 2」を表示する。
- [12][13] もしnumberが3ならば、「number = 3 」を表示する。
- [14][15] それ以外ならば、「else - number = 3 」を表示する。
- [16] 「NUMBER = 3」を表示する。
まとめ
このページではJavaのif-else文についてお伝えしてきた。こういった2分岐の処理は本当にしょっちゅう登場する。必ず使い方をマスターしてしまおう。