「もし宿に空室がなければ、満室と表示する」など「もし○○なら、△△する」という表現には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文の典型的なサンプルだ。確認してみよう。
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");
}
}
}
実行結果
[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の場合である。
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");
}
}
実行結果
[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文でブロックがない場合は、一文しか書けないのだ。
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 = 番号」の表示はすべて行われる。
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");
}
}
実行結果
[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分岐の処理は本当にしょっちゅう登場する。必ず使い方をマスターしてしまおう。




