
Java道|if~else文と分岐の基本
true ならこちら、false ならあちら。
if~else文を使うと、Javaの分岐はもっとはっきり書ける。
これまでの if文 では、条件が true のときだけ処理を実行する方法を学びました。
たとえば、入力された値が特定の数だったときだけメッセージを表示する、といった処理です。
ただ、実際のプログラムでは、条件が成り立たなかった場合にも、別の処理を行いたいことがよくあります。
たとえば、入力された値が正しければ案内メッセージを表示し、正しくなければ別のメッセージを表示する。
会員なら特典を表示し、会員でなければ通常案内を表示する。
任務札の番号が特別番号なら特別任務を案内し、そうでなければ通常任務を案内する。
このように、条件が true の場合と false の場合で処理を分けたいときに使うのが if~else文 です。
↓クリックすると拡大表示されます。

if~else文は、条件が true のときの処理と、false のときの処理をセットで書けます。つまり、条件の結果によって「どちらか一方を必ず実行する」分岐を作れる構文です。
この記事では、指定内容に沿って Sample3.java と Sample3.java(拡張)のみを使い、if~else文の基本、true と false の分かれ道、ブロックを使った複数文の処理、if文との違いを、鬼滅の刃風の世界観にたとえながらやさしく整理します。
鬼滅の刃風にたとえると、if~else文は「条件によって進む道を必ずどちらかに決める分岐札」です。
任務札が特別番号なら特別任務へ進む。そうでなければ通常任務へ進む。
このように、true と false の両方に道を用意できるのが if~else文 です。
if~else文とは何か
if~else文は、条件の結果に応じて、2つの処理のうちどちらか一方を実行する構文です。
基本の形は次のようになります。
if(条件)
文1;
else
文2;↓クリックすると拡大表示されます。

この構文では、条件が true のときに 文1 が実行されます。
条件が false のときには 文2 が実行されます。
| 条件の結果 | 実行される処理 |
|---|---|
| true | if 側の文 |
| false | else 側の文 |
ここで大切なのは、どちらか一方が必ず実行されるということです。
if文だけの場合、条件が false なら対象の処理を飛ばして次へ進みました。
しかし、if~else文では、false のときにも else 側の処理を指定できます。
| 構文 | true のとき | false のとき |
|---|---|---|
| if文 | 指定した処理を実行する | 何もせず次へ進む |
| if~else文 | if 側の処理を実行する | else 側の処理を実行する |
鬼滅の刃風にたとえると、if文は「条件が合えば技を出す」だけです。
一方、if~else文は「条件が合えば攻撃の型、合わなければ防御の型」というように、どちらの状況にも行動を用意できます。
日常の判断で考える if~else文
if~else文の考え方は、日常の判断に置き換えると分かりやすいです。
たとえば、次のような判断があります。
if(雨が降っている)
傘を持って出かける;
else
そのまま出かける;雨が降っていれば、傘を持って出かけます。
雨が降っていなければ、そのまま出かけます。
このように、条件が成り立つ場合と、成り立たない場合の両方に処理を用意できるのが if~else文 です。
鬼滅の刃風にたとえると、次のようなイメージです。
if(任務札の番号が5である)
特別任務の案内を表示する;
else
通常任務の案内を表示する;任務札の番号が 5 なら特別任務へ進みます。
5 でなければ通常任務へ進みます。
どちらの場合でも、何かしらの処理が実行されるのがポイントです。
if~else文の流れ
if~else文の流れは、次のように考えると分かりやすいです。
| 順番 | 処理 |
|---|---|
| 1 | 条件を調べる |
| 2 | 条件が true なら if 側の処理を実行する |
| 3 | 条件が false なら else 側の処理を実行する |
| 4 | 実行後、次の共通処理へ進む |
if~else文では、if 側と else 側の両方が実行されるわけではありません。
条件の結果によって、片方だけが選ばれます。
| 条件 | 実行される側 | 実行されない側 |
|---|---|---|
| true | if 側 | else 側 |
| false | else 側 | if 側 |
ここが、if~else文の大切な考え方です。
鬼滅の刃風にたとえると、分かれ道で右の道か左の道を選ぶようなものです。
同時に両方の道へ進むことはできません。条件の結果によって、どちらか一方へ進みます。
図:if~else文は二者択一の分岐
↓クリックすると拡大表示されます。

この図が示していること
この図では、if~else文が true と false の2つの道に分かれることを示しています。
条件が true の場合は、if 側の処理が実行されます。
条件が false の場合は、else 側の処理が実行されます。
どちらか一方の処理が終わると、その先の共通の流れへ進みます。
ここから分かることは、if~else文は「条件に応じて2つの処理のどちらか一方を選ぶ構文」だということです。
if~else文の基本構文
あらためて、if~else文の基本構文を確認します。
if(条件)
文1;
else
文2;この構文では、条件が true の場合は 文1 を実行します。
条件が false の場合は 文2 を実行します。
たとえば、次のような考え方です。
if(num == 5)
5が選ばれたときの処理;
else
5以外が選ばれたときの処理;if文だけなら、true のときだけ処理します。
if~else文なら、true のときと false のときの両方の処理を書けます。
| 判断したいこと | 向いている構文 |
|---|---|
| 条件が true のときだけ処理したい | if文 |
| true と false で処理を分けたい | if~else文 |
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("第五任務が選ばれました。");
}
else{
System.out.println("第五任務以外の番号が入力されました。");
}
}
}このプログラムでは、入力された値が 5 であれば、次のメッセージが表示されます。
第五任務が選ばれました。一方、入力された値が 5 でなければ、次のメッセージが表示されます。
第五任務以外の番号が入力されました。条件は次の部分です。
num == 5num が 5 と等しければ true です。
num が 5 以外なら false です。
Sample3.javaの処理の流れ
Sample3.java の処理は、次のように進みます。
| 順番 | 処理内容 |
|---|---|
| 1 | 入力をうながすメッセージを表示する |
| 2 | キーボードから文字列を読み取る |
| 3 | 入力された文字列を整数に変換する |
| 4 | num == 5 という条件を調べる |
| 5 | true なら if ブロックの処理を行う |
| 6 | false なら else ブロックの処理を行う |
注目したいのは、4番から6番の流れです。
if(num == 5){
System.out.println("第五任務が選ばれました。");
}
else{
System.out.println("第五任務以外の番号が入力されました。");
}条件を調べた結果によって、表示されるメッセージが切り替わります。
| 入力値 | num == 5 | 実行される処理 |
|---|---|---|
| 5 | true | if 側の処理 |
| 12 | false | else 側の処理 |
このように、if~else文では、条件の結果に応じて処理の道がはっきり分かれます。
5を入力した場合
5 を入力した場合、num == 5 は true になります。
実行例は次のようになります。
任務番号を入力してください。
5
第五任務が選ばれました。この場合、if ブロックの中にある文が実行されます。
System.out.println("第五任務が選ばれました。");else ブロックの中の文は実行されません。
| 条件の結果 | 実行される側 | 表示される内容 |
|---|---|---|
| true | if 側 | 第五任務が選ばれました。 |
鬼滅の刃風にたとえると、任務番号が 5 だったため、第五任務の指令が開いた流れです。
5以外を入力した場合
12 を入力した場合、num == 5 は false になります。
実行例は次のようになります。
任務番号を入力してください。
12
第五任務以外の番号が入力されました。この場合、if ブロックの中の文は実行されません。
代わりに、else ブロックの中の文が実行されます。
System.out.println("第五任務以外の番号が入力されました。");| 条件の結果 | 実行される側 | 表示される内容 |
|---|---|---|
| false | else 側 | 第五任務以外の番号が入力されました。 |
ここで大切なのは、else 側は「条件が false のときの処理」だということです。
num が 5 ではない場合、6 でも 12 でも 100 でも、すべて else 側へ進みます。
if~else文のよいところ
if~else文の便利なところは、true の場合と false の場合の処理を、1つのまとまりとして書けることです。
if文だけの場合、条件が false のときの処理は別に考える必要があります。
しかし、if~else文を使うと、条件が成り立つ場合と成り立たない場合をセットで書けます。
| 場面 | if~else文が向いている理由 |
|---|---|
| 入力が正しいかどうかで表示を変える | 正しい場合と正しくない場合を分けられる |
| 合格か不合格かを判定する | 合格時と不合格時の処理を用意できる |
| 会員か非会員かで案内を変える | 2種類の表示を切り替えられる |
| 特別任務か通常任務かを分ける | 条件に応じて案内を切り替えられる |
つまり、2つの状況に応じて処理を分けたいとき、if~else文はとても使いやすい構文です。
鬼滅の刃風にたとえると、if~else文は「任務札が特別なら特別指令、そうでなければ通常指令」というように、どちらの結果にも対応できる仕組みです。
複数の文を処理するif~else文
if~else文でも、if文と同じように、複数の文をまとめて実行できます。
そのためには、{ } を使ってブロックを作ります。
基本の形は次のようになります。
if(条件){
文1;
文2;
}
else{
文3;
文4;
}この構文では、条件が true のときは if ブロック内の文が上から順に実行されます。
条件が false のときは else ブロック内の文が上から順に実行されます。
| 条件の結果 | 実行される範囲 |
|---|---|
| true | if ブロック内 |
| false | else ブロック内 |
ブロックを使うことで、複数の処理をひとまとまりとして扱えます。
複数文の分岐を確認する
次に、true の場合も false の場合も、それぞれ2つの文を実行する例を見ていきます。
ファイル名: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("第五任務が選ばれました。");
System.out.println("特別指令を表示します。");
}
else{
System.out.println("第五任務以外の番号が入力されました。");
System.out.println("通常指令を表示します。");
}
}
}このプログラムでは、条件が true の場合は if ブロック内の2文が実行されます。
条件が false の場合は else ブロック内の2文が実行されます。
if(num == 5){
System.out.println("第五任務が選ばれました。");
System.out.println("特別指令を表示します。");
}
else{
System.out.println("第五任務以外の番号が入力されました。");
System.out.println("通常指令を表示します。");
}| 条件の結果 | 実行される処理 |
|---|---|
| true | if ブロック内の文が上から順に実行される |
| false | else ブロック内の文が上から順に実行される |
ここで大切なのは、片方のブロックだけが実行されることです。
if ブロックと else ブロックの両方が実行されるわけではありません。
Sample3.java(拡張)で5を入力した場合
5 を入力した場合、num == 5 は true になります。
実行例は次のようになります。
任務番号を入力してください。
5
第五任務が選ばれました。
特別指令を表示します。この場合、if ブロック内の2つの文が順番に実行されています。
| 入力値 | 条件 | 実行されるブロック |
|---|---|---|
| 5 | true | if ブロック |
else ブロック内の文は実行されません。
Sample3.java(拡張)で5以外を入力した場合
12 を入力した場合、num == 5 は false になります。
実行例は次のようになります。
任務番号を入力してください。
12
第五任務以外の番号が入力されました。
通常指令を表示します。この場合、else ブロック内の2つの文が順番に実行されています。
| 入力値 | 条件 | 実行されるブロック |
|---|---|---|
| 12 | false | else ブロック |
if ブロック内の文は実行されません。
図:ブロックを使ったif~else文の流れ
↓クリックすると拡大表示されます。

この図が示していること
この図では、ブロックを使った if~else文 の流れを示しています。
条件 num == 5 が true の場合は、if ブロック内の文が上から順に実行されます。
条件 num == 5 が false の場合は、else ブロック内の文が上から順に実行されます。
ここから分かることは、if~else文では条件の結果に応じて、片方のブロックだけが実行されるということです。
true 側と false 側の両方が同時に実行されることはありません。
if文との違いを整理する
if文 と if~else文 は似ていますが、役割が違います。
| 構文 | 条件が true のとき | 条件が false のとき |
|---|---|---|
| if文 | 指定した処理を行う | 何もせず次へ進む |
| if~else文 | if 側の処理を行う | else 側の処理を行う |
if文は、条件が true のときだけ何かをしたい場合に使います。
たとえば、
if(num == 5){
System.out.println("第五任務が選ばれました。");
}この場合、num が 5 のときだけメッセージを表示します。
5 ではない場合は何も表示せず、次へ進みます。
一方、if~else文は、true と false の両方に処理を用意したい場合に使います。
if(num == 5){
System.out.println("第五任務が選ばれました。");
}
else{
System.out.println("第五任務以外の番号が入力されました。");
}この場合、num が 5 なら if 側、5 でなければ else 側が実行されます。
| 使いたい場面 | 選ぶ構文 |
|---|---|
| 条件が合うときだけ処理したい | if文 |
| 条件が合う場合と合わない場合で処理を分けたい | if~else文 |
鬼滅の刃風にたとえると、if文は「条件がそろったら技を出す」。
if~else文は「条件がそろったら攻める、そろわなければ守る」という分かれ方です。
ブロックとインデントを丁寧に書く
if~else文では、処理の範囲を分かりやすくするために、ブロックとインデントを丁寧に書くことが大切です。
if(num == 5){
System.out.println("第五任務が選ばれました。");
System.out.println("特別指令を表示します。");
}
else{
System.out.println("第五任務以外の番号が入力されました。");
System.out.println("通常指令を表示します。");
}{ } の中が、それぞれのブロックです。
| ブロック | 実行される条件 |
|---|---|
| if ブロック | 条件が true のとき |
| else ブロック | 条件が false のとき |
インデントには文法上の意味はありません。
しかし、コードの読みやすさには大きく影響します。
特に if~else文 は処理の流れが分かれるため、インデントが乱れていると、どこまでが if 側で、どこからが else 側なのか分かりにくくなります。
読みやすいコードを書くためにも、ブロックとインデントはセットで意識しましょう。
if~else文を読むときのポイント
if~else文を読むときは、次の順番で確認すると分かりやすくなります。
| 確認すること | 見る場所 |
|---|---|
| 条件は何か | if の丸かっこの中 |
| true のとき何をするか | if ブロック |
| false のとき何をするか | else ブロック |
| 複数文があるか | { } の中 |
| どちらが実行されるか | 条件の true / false |
たとえば、次のコードを見るときは、
if(num == 5){
System.out.println("第五任務が選ばれました。");
}
else{
System.out.println("第五任務以外の番号が入力されました。");
}まず条件を確認します。
num == 5次に、true のときの処理を確認します。
System.out.println("第五任務が選ばれました。");最後に、false のときの処理を確認します。
System.out.println("第五任務以外の番号が入力されました。");この順番で見ると、処理の分かれ方が整理しやすくなります。
if~else文を理解するための重要ポイント
if~else文を学ぶときは、次の点を押さえておくと安心です。
| ポイント | 内容 |
|---|---|
| 条件によって2通りの処理を分けられる | true と false で動きが変わる |
| 必ずどちらか一方が実行される | if 側か else 側のどちらか |
| 両方は実行されない | 条件の結果で片方だけ選ばれる |
| 複数の文は { } でまとめる | ブロックで処理のまとまりを作る |
| if文より分岐が明確 | false の場合の処理も書ける |
| インデントを整えると読みやすい | 処理の範囲が見えやすくなる |
if~else文は、条件分岐をより分かりやすく書くための基本構文です。
if~else文は分岐の基本を広げる構文
if~else文は、if文の基本を一歩進めた構文です。
if文では、条件が true のときだけ処理を実行しました。
if~else文では、条件が true のときの処理と、false のときの処理を分けて書けます。
| 構文 | 考え方 |
|---|---|
| if文 | 条件が true なら実行する |
| if~else文 | true ならこちら、false ならあちらを実行する |
実際のプログラムでは、「条件に合うときだけ処理する」だけでなく、「条件に合う場合と合わない場合で別々の処理をする」場面がたくさんあります。
たとえば、正解なら正解メッセージ、不正解なら再挑戦メッセージ。
合格なら合格表示、不合格なら復習案内。
特別任務なら特別指令、通常任務なら通常指令。
このような二者択一の処理を表すとき、if~else文はとても便利です。
鬼滅の刃風にたとえると、if~else文は「状況を見て、攻めるか守るかを必ず決める分岐の型」です。
この型をしっかり理解しておくと、この先に学ぶ if~else if~else文 のような複数条件の分岐も自然に理解しやすくなります。
