
Java入門|複数条件を扱う if~else if~else
条件が増えても迷わない。if~else if~elseで分岐をすっきり整理しよう
これまでに学んだ if文 では、条件が true のときだけ処理を行えました。また、if~else文 では、条件が true の場合と false の場合で、2通りの処理を分けられるようになりました。
けれども、実際のプログラムでは、2通りだけでは足りないことがよくあります。たとえば、入力された値が 1 ならこの処理、2 なら別の処理、3 ならさらに別の処理、というように、いくつもの条件を順番に調べたい場面があります。
そんなときに活躍するのが、if~else if~else です。
この構文を使うと、複数の条件を上から順番に判定し、それに応じて実行する処理を切り替えられます。条件がたくさんある場面でも、流れを整理しながら分岐を書けるので、より実用的なプログラムが作れるようになります。
if文 が1つの分かれ道、if~else文 が2つの分かれ道だとすると、if~else if~else は複数の分かれ道を順番にチェックしていく構文です。ここをしっかり理解すると、条件分岐の表現力がぐっと広がりますよ。
if~else if~else とは何か
if~else if~else は、複数の条件を順に調べて、最初に当てはまった処理を実行する構文です。
基本の形は次のようになります。
if(条件1){
文1;
}
else if(条件2){
文2;
}
else if(条件3){
文3;
}
else{
文4;
}この書き方では、まず条件1を調べます。
条件1が true なら、文1を実行して分岐は終了します。
条件1が false なら、次に条件2を調べます。
条件2が true なら、文2を実行して終了します。
さらに条件2も false なら、条件3を調べます。
条件3が true なら、文3を実行します。
そして、どの条件にも当てはまらなかった場合は、最後の else の文4が実行されます。
ここで大切なのは、上から順番に調べて、最初に true になったところだけが実行されるということです。
日常の判断に置きかえてみよう
日常の場面で考えると、この仕組みはとても自然です。
たとえば、こんな判断ができます。
- 成績がとてもよければ、ごほうびを用意する
- そこまでではないけれど合格なら、ほっとひと安心する
- どちらにも当てはまらなければ、復習をがんばる
これを if~else if~else のイメージで表すと、次のようになります。
if(成績がとてもよい){
ごほうびを用意する
}
else if(合格している){
ほっとひと安心する
}
else{
復習をがんばる
}このように、複数の条件を順に確認しながら、その状況に合った処理を選べるのが if~else if~else です。
処理の流れをつかもう
if~else if~else の流れは、次のように整理できます。
- まず最初の条件を調べる
- true ならそのブロックを実行する
- false なら次の条件を調べる
- それも false なら、さらに次の条件へ進む
- 最後までどれも当てはまらなければ else を実行する
つまり、条件を1つずつ確認しながら、ぴったりの処理を探していく流れです。

この図では、条件を上から順番に調べていく様子を表しています。
まず条件1を見て、true ならその処理を行います。
false なら条件2へ進みます。
条件2が true ならその処理を行い、false なら最後の else に進みます。
このように、if~else if~else は「上から順番に判定していく分岐」だと考えると理解しやすいです。
else if はいくつでも増やせる
if~else if~else の便利なところは、else if を必要なだけ追加できることです。
2つでも3つでも、条件が必要な数だけ並べられます。
たとえば、次のような形も書けます。
if(条件1){
文1;
}
else if(条件2){
文2;
}
else if(条件3){
文3;
}
else if(条件4){
文4;
}
else{
文5;
}このように、条件が増えても順番に整理して書けます。
ただし、条件が多くなるほど、上からどの順番で判定するかが大切になります。上の条件で処理が決まると、その下は調べられないからです。この点はあとで詳しく見ていきます。
最後の else は省略できる
if~else if~else では、最後の else は必ずしも必要ではありません。
必要がなければ省略できます。
たとえば、次のような書き方もできます。
if(条件1){
文1;
}
else if(条件2){
文2;
}この場合、条件1も条件2も false だったときは、何も実行されずにそのまま次の処理へ進みます。
つまり、最後の else は「どの条件にも当てはまらなかったときの処理」を書きたいときに使うものです。
サンプルプログラムで見てみよう
では、実際に if~else if~else を使ったプログラムを見てみましょう。
今回は、入力された整数によって、1なら朝のあいさつ、2なら昼のあいさつ、それ以外なら案内メッセージを表示するプログラムを作成します。
ファイル名:Sample4.java
import java.io.*;
class Sample4
{
public static void main(String[] args) throws IOException
{
System.out.println("数字を入力してください。");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int num = Integer.parseInt(str);
if(num == 1){
System.out.println("おはようございます。");
}
else if(num == 2){
System.out.println("こんにちは。");
}
else{
System.out.println("1か2を入力してください。");
}
}
}このプログラムでは、入力された値に応じて表示するメッセージが変わります。
- 1 のときは おはようございます。
- 2 のときは こんにちは。
- それ以外のときは 1か2を入力してください。
と表示されます。
Sample4.java の処理の流れ
このプログラムの流れを整理すると、次のようになります。
| 順番 | 処理内容 |
|---|---|
| 1 | 入力をうながすメッセージを表示する |
| 2 | キーボードから文字列を読み取る |
| 3 | 文字列を整数に変換する |
| 4 | num == 1 を調べる |
| 5 | false なら num == 2 を調べる |
| 6 | どちらも false なら else の処理を行う |
このように、条件を順に確認していく流れになっています。
1 を入力した場合の実行例
1 を入力すると、最初の条件 num == 1 が true になります。
そのため、最初の if ブロックが実行されます。
実行例
数字を入力してください。
1
おはようございます。この場合、最初の条件で処理が決まったので、その下の else if や else は実行されません。
2 を入力した場合の実行例
次に 2 を入力した場合を見てみましょう。
最初の条件 num == 1 は false になります。
そのため、次の else if(num == 2) が調べられます。
こちらは true になるので、その処理が実行されます。
実行例
数字を入力してください。
2
こんにちは。このように、最初の条件が false でも、次の条件が true なら、その場所で処理が決まります。
それ以外を入力した場合の実行例
では、たとえば 5 を入力した場合はどうなるでしょうか。
- num == 1 は false
- num == 2 も false
となるため、最後の else が実行されます。
実行例
数字を入力してください。
5
1か2を入力してください。このように、どの条件にも当てはまらなかったときは、最後の else が受け持ちます。
どこが実行されるのかを整理しよう
Sample4.java の動きを表でまとめると、次のようになります。
| 入力値 | num == 1 | num == 2 | 実行される処理 |
|---|---|---|---|
| 1 | true | 調べない | おはようございます。 |
| 2 | false | true | こんにちは。 |
| 5 | false | false | 1か2を入力してください。 |
ここで注目したいのは、1つの分岐で実行されるのは1か所だけだということです。
たとえば 1 を入力した場合は、最初の条件が true になった時点で処理が決まり、その下の条件は調べられません。これが if~else if~else の大切な特徴です。

この図では、最初の条件から順番に判断していく流れがはっきりわかるようになっています。
まず num == 1 を確認し、true なら おはようございます。 を表示します。
false の場合は次の num == 2 を確認し、true なら こんにちは。 を表示します。
さらに false なら、最後の else に進んで 1か2を入力してください。 を表示します。
このように、if~else if~else は条件を段階的に確認していく構文です。
条件の順番が大切
if~else if~else を使うときに特に気をつけたいのが、条件を書く順番です。
なぜなら、上にある条件から先に調べられ、true になった時点で分岐が終わるからです。
たとえば、次のような条件の並べ方を考えてみましょう。
if(score >= 60){
System.out.println("合格です。");
}
else if(score >= 80){
System.out.println("とてもよくできました。");
}この書き方だと、80点以上でも最初の score >= 60 が true になってしまうため、下の score >= 80 は実行されません。
つまり、80点以上の人にも 合格です。 しか表示されなくなります。
このような場合は、より厳しい条件を先に書く必要があります。
if(score >= 80){
System.out.println("とてもよくできました。");
}
else if(score >= 60){
System.out.println("合格です。");
}このように書けば、80点以上なら最初の条件に当てはまり、60点以上79点以下なら次の条件に当てはまります。
if~else if~else では、どの順番で条件を書くかが処理結果に大きく影響することを覚えておきましょう。
if~else文との違い
if~else if~else は、if~else文 をさらに発展させたものです。
| 構文 | 分岐できる数 |
|---|---|
| if文 | 条件がtrueのときだけ処理する |
| if~else文 | true と false の2通りに分ける |
| if~else if~else | 3通り以上の条件分岐ができる |
つまり、分岐の数が増えたときに使いやすいのが if~else if~else です。
2通りの分岐なら if~else文 で十分ですが、3通り以上の選択肢があるなら if~else if~else が便利です。
読みやすい書き方を心がけよう
条件が増えると、コードはどうしても長くなりやすいです。
そのため、ブロックの { } やインデントを丁寧に書いて、読みやすくすることがとても大切です。
たとえば、次のようにそろえて書くと見やすくなります。
if(num == 1){
System.out.println("おはようございます。");
}
else if(num == 2){
System.out.println("こんにちは。");
}
else{
System.out.println("1か2を入力してください。");
}見た目が整っていると、どこが if で、どこが else if で、どこが else なのかがすぐにわかります。条件分岐では、こうした読みやすさがとても重要です。
if~else if~else を理解するポイント
最後に、大切なポイントを整理しておきましょう。
| ポイント | 内容 |
|---|---|
| 複数の条件を順番に判定できる | else if を使って条件を増やせる |
| 最初に true になった場所だけが実行される | その下は調べられない |
| 最後の else はどの条件にも当てはまらない場合の処理 | 省略もできる |
| 条件の順番が大切 | 上にある条件から先に評価される |
| 3通り以上の分岐に向いている | 複雑な条件分岐を整理しやすい |
複数条件の分岐を整理できる便利な構文
if~else if~else は、複数の条件に応じて処理を切り替えるための、とても便利な構文です。
条件が増えてきたときでも、上から順番に整理して書けるので、処理の流れをわかりやすく保ちやすいのが大きな特徴です。
プログラムでは、入力値や点数、状態、選択肢などによって、3通り以上の分岐が必要になることがよくあります。そんなときに if~else if~else を使えると、場合分けをすっきり表現できます。
ここをしっかり理解しておくと、複雑に見える条件分岐も少しずつ整理して読めるようになります。次の内容へ進む前に、まずは「上から順番に条件を調べ、最初に当てはまった処理だけが実行される」というしくみを、しっかり押さえておきましょう。
