
Java入門|if~else文のしくみと使い方
trueでもfalseでも迷わない。if~else文を覚えると、Javaの分岐がはっきり見えてくる
前の内容では、if文を使って「条件が true のときだけ処理を行う」方法を学びました。if文はとても便利ですが、実際のプログラムでは、条件が成り立たないときにも別の処理をしたい場面がよくあります。
たとえば、入力された値が正しければ案内メッセージを表示し、正しくなければエラーメッセージを表示したいことがあります。また、会員なら特典を表示し、会員でなければ通常の案内を表示したいこともあります。このように、条件が true の場合と false の場合で処理をはっきり分けたいときに使うのが if~else文 です。
if~else文を使うと、条件が true だったときの処理と、false だったときの処理をセットで書けます。つまり、「どちらか一方を必ず実行する」という分岐が作れるわけです。
if文が「条件が合えば実行する」構文だとすると、if~else文は「条件に合えばこちら、合わなければあちら」という構文です。条件分岐の基本をよりしっかり身につけるためにも、この if~else文 はとても大切な内容になります。
if~else文とは何か
if~else文は、条件の結果に応じて、2つの処理のどちらか一方を実行する構文です。
基本の形は次のようになります。
if(条件)
文1;
else
文2;この書き方では、条件が true のときに 文1 が実行されます。
反対に、条件が false のときには 文2 が実行されます。
ここで大切なのは、true のときと false のときで、必ずどちらか一方の処理が行われるということです。
if文 では、条件が false のときには何もせずに次へ進みました。
けれども if~else文 では、false のときにも別の処理を指定できます。
この違いが、if文 と if~else文 の大きな違いです。
日常の考え方に置きかえてみよう
日常の場面に置きかえると、if~else文 の考え方はとても自然です。
たとえば、こんな判断があります。
- もし雨が降っていたら、傘を持って出かける
- そうでなければ、そのまま出かける
これを if~else文 の形で考えると、次のようなイメージになります。
if(雨が降っている)
傘を持って出かける
else
そのまま出かけるこのように、条件が成り立つ場合と成り立たない場合の両方に対して、それぞれの動きを決められるのが if~else文 です。
前回の if文 では、「雨が降っていたら傘を持つ」までは書けても、「雨が降っていなかったらどうするか」は別に考える必要がありました。if~else文 では、その両方をひとまとめにできます。
if~else文の流れをつかもう
if~else文 の流れは、次のように考えるとわかりやすいです。
- 条件を調べる
- true なら if の側の処理を行う
- false なら else の側の処理を行う
つまり、条件を見て分かれ道を選ぶようなイメージです。

この図では、if~else文 が「二者択一」の分岐であることを表しています。
条件が true なら右側の処理へ進み、false なら左側の処理へ進みます。
そして、どちらかの処理が終わると、その先の共通の流れへ合流します。
このように、if~else文 は、条件に応じて2通りの動き方をさせるための仕組みです。
if~else文の基本構文を見てみよう
あらためて、基本構文を確認しておきましょう。
if(条件)
文1;
else
文2;この構文では、
- 条件が true の場合は 文1 を実行する
- 条件が false の場合は 文2 を実行する
というルールで動きます。
つまり、条件の結果によって、どちらか一方が必ず選ばれます。
これは、単純な if文 と比べると、処理の分け方がよりはっきりしています。たとえば「入力が正しいときは歓迎メッセージ、正しくないときは再入力をうながすメッセージ」といった、2通りの状況に対応しやすくなります。
サンプルプログラムでif~else文を確認しよう
では、実際のプログラムで if~else文 の動きを見てみましょう。
今回は、入力された整数が 5 だったら特別なメッセージを表示し、5でなかったら別のメッセージを表示するプログラムを作成します。
ファイル名:Sample3.java
import java.io.*;
class Sample3
{
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 == 5){
System.out.println("5が選ばれました。");
}
else{
System.out.println("5以外の数字が入力されました。");
}
}
}このプログラムでは、入力された値が 5 であれば
5が選ばれました。
と表示されます。
そうでなければ、
5以外の数字が入力されました。
と表示されます。
Sample3.java の処理の流れ
このプログラムの流れを順番に整理すると、次のようになります。
| 順番 | 処理内容 |
|---|---|
| 1 | 入力をうながすメッセージを表示する |
| 2 | キーボードから文字列を読み取る |
| 3 | 文字列を整数に変換する |
| 4 | num == 5 という条件を調べる |
| 5 | true なら if ブロックの処理を行う |
| 6 | false なら else ブロックの処理を行う |
ここで注目したいのは、4番から6番の部分です。
条件を調べた結果によって、表示されるメッセージが切り替わります。
5を入力したときの実行例
5 を入力した場合は、条件 num == 5 が true になります。
そのため、if の中の処理が実行されます。
実行例
数字を入力してください。
5
5が選ばれました。この結果から、条件が true の場合は if 側の処理が実行されることがわかります。
5以外を入力したときの実行例
では、たとえば 12 を入力した場合はどうでしょうか。
このとき、num == 5 は false になります。
そのため、else の中の処理が実行されます。
実行例
数字を入力してください。
12
5以外の数字が入力されました。こちらの結果を見ると、条件が false だったため、else 側のメッセージが表示されていることがわかります。
if~else文のよいところ
if~else文 の便利なところは、条件が true の場合も false の場合も、どちらの動きも明確に書けることです。
if文 だけを使うと、false のときの処理は if文 の外に別に書くことになります。
ですが、if~else文 を使うと、true のときと false のときの処理を1つのまとまりとして書けます。
そのため、次のような場面でとても使いやすいです。
- 正しい入力と誤った入力で表示を変えたいとき
- 合格と不合格で案内を切り替えたいとき
- 会員と非会員で表示内容を変えたいとき
つまり、2つの状況に応じて処理を分けたいなら、if~else文 がぴったりです。
複数の文を処理するif~else文
if~else文 でも、if文 のときと同じように、複数の文をまとめて実行できます。
そのためには { } を使ってブロックを作ります。
書き方は次のようになります。
if(条件){
文1;
文2;
}
else{
文3;
文4;
}この構文では、
- 条件が true のときは 文1、文2 を順に実行する
- 条件が false のときは 文3、文4 を順に実行する
という動きになります。
つまり、true 側にも false 側にも、複数の処理を書けるわけです。
複数の文を使った例
では、もう少しわかりやすい例を見てみましょう。
同じ Sample3.java の考え方を広げると、たとえば次のような処理が考えられます。
ファイル名:Sample3.java
import java.io.*;
class Sample3
{
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 == 5){
System.out.println("5が選ばれました。");
System.out.println("特別メッセージを表示します。");
}
else{
System.out.println("5以外の数字が入力されました。");
System.out.println("通常メッセージを表示します。");
}
}
}このように書くと、条件が true の場合も false の場合も、それぞれ2つの文が順番に実行されます。
複数文の動きを表で整理しよう
| 条件の結果 | 実行される処理 |
|---|---|
| true | if ブロック内の文が上から順に実行される |
| false | else ブロック内の文が上から順に実行される |
ここでのポイントは、条件に応じて片方のブロックだけが実行されることです。
両方とも実行されるわけではありません。

この図では、if~else文 が true と false の2つの道に分かれていることを表しています。
条件が true なら右側の処理が順番に実行され、false なら左側の処理が順番に実行されます。
そして、どちらかの処理が終わったあとで、その先の共通の処理へ進みます。
この図を見ると、if~else文 が「2通りの状況に応じて、実行する内容を切り替える文」であることがよくわかります。
if文との違いを整理しておこう
if文 と if~else文 はよく似ていますが、役割にははっきり違いがあります。
| 構文 | 条件がtrueのとき | 条件がfalseのとき |
|---|---|---|
| if文 | 指定した処理を行う | 何もせず次へ進む |
| if~else文 | if 側の処理を行う | else 側の処理を行う |
この表を見ると、if~else文 のほうが、false の場合の動きまできちんと決められることがわかります。
つまり、
- 条件が合ったときだけ処理したいなら if文
- 条件が合ったときと合わなかったときの両方を処理したいなら if~else文
という使い分けができます。
ブロックとインデントを丁寧に書こう
if~else文 でも、複数の文を扱うときには { } を使ってブロックを作ることが大切です。
また、どこまでが if の中で、どこからが else の中なのかが見やすいように、インデントもきちんとそろえましょう。
たとえば、次のように書くと読みやすくなります。
if(num == 5){
System.out.println("5が選ばれました。");
System.out.println("特別メッセージを表示します。");
}
else{
System.out.println("5以外の数字が入力されました。");
System.out.println("通常メッセージを表示します。");
}インデントには文法上の意味はありませんが、読みやすさには大きく影響します。特に条件分岐は処理の流れが分かれやすいので、見た目を整えることがとても大切です。
if~else文を理解するためのポイント
最後に、if~else文 の大切なポイントを整理しておきましょう。
| ポイント | 内容 |
|---|---|
| 条件によって2通りの処理を分けられる | true と false で動きが変わる |
| 必ずどちらか一方が実行される | 両方は実行されない |
| 複数の文は { } でまとめる | ブロックで処理のまとまりを作る |
| if文より分岐が明確 | false の場合の処理も書ける |
| インデントを整えると読みやすい | コードの範囲が見やすくなる |
if~else文は分岐の基本を広げる構文
if~else文 は、if文 の基本を一歩進めた構文です。
条件が true のときだけでなく、false のときにも別の処理を用意できるようになることで、プログラムの表現力はぐっと広がります。
実際のプログラムでは、「条件に合うときだけ処理する」よりも、「合う場合と合わない場合でそれぞれ違う処理をする」場面のほうが多いくらいです。だからこそ、if~else文 はとても大切です。
ここをしっかり理解しておくと、この先の if~else if~else文 も自然に学びやすくなります。まずは、条件に応じて2通りの流れを作れること、そのときに実行されるのは片方だけだということをしっかり押さえておきましょう。
