Java道|if文の使い方とポイント

条件が true になった瞬間だけ、処理の扉が開く。
if文を覚えると、Javaは状況に応じて動けるようになる。

Javaでは、これまで学んできたように、基本的な処理は上から下へ順番に実行されます。
しかし、実際のプログラムでは、いつも同じ処理だけをまっすぐ実行すればよいとは限りません。

たとえば、入力された数字が特定の値だったときだけメッセージを表示したい場合があります。
点数が一定以上だったときだけ合格と表示したい場合もあります。
また、条件を満たしたときだけ特別な処理を行いたい場面もあります。

このように、条件に応じて処理を実行するかどうかを決めるために使うのが if文 です。

if文は、条件が true のときだけ指定した処理を実行します。
条件が false のときは、その処理を行わずに次へ進みます。

この記事では、指定内容に沿って Sample1.java と Sample2.java のみを使い、if文の基本、true と false の流れ、ブロックの使い方、セミコロンの注意点を、鬼滅の刃風の世界観にたとえながらやさしく整理します。

鬼滅の刃風にたとえると、if文は「条件を満たしたときだけ発動する技」です。
敵との距離が近いなら近接の型を使う。
体力が一定以上なら攻撃に出る。
特別な番号の任務札を持っていたら、追加の指令を表示する。
このように、状況を見て処理を動かすかどうかを決めるのが if文 です。

if文とは何か

if文は、条件が true のときだけ文を実行するための構文です。

基本の形は次のようになります。

if(条件)
    文;

↓クリックすると拡大表示されます。

この形では、条件が true だった場合だけ、直後の1文が実行されます。
条件が false の場合、その文は実行されず、次の処理へ進みます。

条件の結果if文の中の処理
true実行される
false実行されない

if文は、日本語で考えると「もし条件が成り立つなら、この処理をする」という意味です。

たとえば、次のような考え方です。

日常の判断if文の考え方
よい成績を取ったら、ごほうびを買う条件が true なら、ごほうび処理を実行する
任務番号が一致したら、指令を表示する条件が true なら、指令表示を実行する
体力が残っていたら、修行を続ける条件が true なら、修行処理を実行する

鬼滅の刃風にたとえると、if文は「条件がそろったときだけ発動する型」です。
条件が整っていなければ、その型は発動せず、次の動きへ進みます。

if文の流れ

if文の動きは、次のように考えると分かりやすいです。

順番処理
1条件を調べる
2条件が true なら、指定した文を実行する
3条件が false なら、その文を飛ばす
4if文の次の処理へ進む

大切なのは、条件が false のときにプログラム全体が止まるわけではないことです。
if文の対象になっている処理だけを飛ばし、その次の処理へ進みます。

たとえば、任務中に「敵が近くにいるなら警告を出す」という処理があるとします。
敵が近くにいれば警告を出します。
敵が近くにいなければ警告は出さず、任務の確認を続けます。

このように、if文は処理全体を止めるものではなく、一部の処理を条件つきで実行するための仕組みです。

図:if 文は true のときだけ処理を実行する

↓クリックすると拡大表示されます。

この図が示していること

この図では、if文が条件の結果によって処理を実行するかどうかを決めることを示しています。

条件が true の場合は、if文の対象になっている処理が実行されます。
条件が false の場合は、その処理を飛ばして次へ進みます。

ここから分かることは、if文は「true のときだけ実行する」ための構文だということです。

日常の判断をif 文で考える

if文は、日常の判断に置き換えると理解しやすくなります。

たとえば、次のような判断があります。

if(よい成績をとった)
    旅行に行く;

実際のJavaでは、このように日本語の条件を書くことはできません。
ただし、考え方としてはこの形です。

条件である「よい成績をとった」が true なら、「旅行に行く」という処理を実行します。
条件が false なら、「旅行に行く」は実行されません。

鬼滅の刃風にたとえると、次のようになります。

if(任務札の番号が7である)
    特別な指令を表示する;

任務札の番号が 7 なら、特別な指令が表示されます。
7 でなければ、その指令は表示されず、次の確認へ進みます。

このように、if文は「条件に合ったときだけ実行したい処理」を書くために使います。

if 文の基本を確認する

ここでは、ユーザーに整数を入力してもらい、その値が 7 のときだけ特別なメッセージを表示するプログラムを見ていきます。

ファイル名:Sample1.java

import java.io.*;

class Sample1
{
    public static void main(String[] args) throws IOException
    {
        System.out.println("任務札の番号を1つ入力してください。");

        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();
        int num = Integer.parseInt(str);   // 入力された文字列を整数に変換する

        if(num == 7)
            System.out.println("特別任務の札です。慎重に進みましょう。");

        System.out.println("任務札の確認が終わりました。");
    }
}

このプログラムでは、入力された整数が 7 のときだけ、次のメッセージが表示されます。

特別任務の札です。慎重に進みましょう。

そして、最後には必ず次のメッセージが表示されます。

任務札の確認が終わりました。

ここで使っている if文 は、次の部分です。

if(num == 7)
    System.out.println("特別任務の札です。慎重に進みましょう。");

条件は num == 7 です。
num の値が 7 と等しければ true になります。
7 以外なら false になります。

Sample1.javaの処理の流れ

Sample1.java は、次のような順番で動きます。

順番処理内容
1入力をうながすメッセージを表示する
2キーボードから文字列として入力を受け取る
3入力された文字列を整数に変換する
4num == 7 という条件を調べる
5条件が true なら、特別任務のメッセージを表示する
6最後の確認メッセージを表示する

特に大切なのは、4番目と5番目です。

if(num == 7)
    System.out.println("特別任務の札です。慎重に進みましょう。");

この条件が true なら、次の1文が実行されます。
false なら、その1文は実行されません。

条件がtrueだった場合

たとえば、ユーザーが 7 を入力したとします。

この場合、num の値は 7 です。

num == 7

この条件は true になります。

実行例は次のようになります。

任務札の番号を1つ入力してください。
7
特別任務の札です。慎重に進みましょう。
任務札の確認が終わりました。

条件が true だったため、if文の対象になっているメッセージが表示されました。

入力値条件 num == 7if文の中の処理
7true実行される

鬼滅の刃風にたとえると、任務札の番号が 7 だったので、特別任務の指令が開いたような流れです。

条件がfalseだった場合

次に、ユーザーが 3 を入力した場合を考えます。

この場合、num の値は 3 です。

num == 7

この条件は false になります。
3 は 7 と等しくないからです。

実行例は次のようになります。

任務札の番号を1つ入力してください。
3
任務札の確認が終わりました。

特別任務のメッセージは表示されません。
ただし、最後の確認メッセージは表示されます。

入力値条件 num == 7if文の中の処理
3false実行されない

ここで大切なのは、if文の条件が false でも、プログラム全体が止まるわけではないことです。
if文の対象になっている文だけを飛ばして、次の処理へ進みます。

System.out.println("任務札の確認が終わりました。");

この文は if文の外にあるため、入力値が 7 でも 3 でも必ず実行されます。

if文の対象になる範囲

Sample1.java の if文では、条件が true のときに実行されるのは、直後の1文だけです。

if(num == 7)
    System.out.println("特別任務の札です。慎重に進みましょう。");

System.out.println("任務札の確認が終わりました。");

この場合、if文の対象は次の1文です。

System.out.println("特別任務の札です。慎重に進みましょう。");

その次の文は、if文の外です。

System.out.println("任務札の確認が終わりました。");

そのため、最後の確認メッセージは常に実行されます。

if文の対象か実行される条件
特別任務のメッセージ対象num == 7 が true のときだけ
確認終了メッセージ対象外常に実行される

この「どこまでが if文 の対象なのか」を正しく読むことが、とても大切です。

図:Sample1.javaのtrueとfalseの流れ

↓クリックすると拡大表示されます。

この図が示していること

この図では、Sample1.java で 7 を入力した場合と、3 を入力した場合の流れを比較しています。

7 を入力した場合、num == 7 は true になります。
そのため、if文の中のメッセージが表示されます。

3 を入力した場合、num == 7 は false になります。
そのため、if文の中のメッセージは表示されません。

ただし、どちらの場合でも最後の「任務札の確認が終わりました。」は表示されます。
これは、その文が if文の外にあるからです。

ここから分かることは、if文は処理全体を分けるのではなく、対象になっている一部の処理だけを条件つきで実行するということです。

if文で複数の文を処理する

ここまでの if文 では、条件が true のときに1文だけを実行していました。

しかし、実際には条件が true のときに複数の処理をまとめて実行したいことがあります。

そのときに使うのがブロックです。

ブロックとは、{ } で囲まれた処理のまとまりです。

if(条件){
    文1;
    文2;
    文3;
}

このように書くと、条件が true のときに、ブロック内の文が上から順番に実行されます。
条件が false のときは、ブロック全体が実行されません。

書き方条件が true のときに実行される範囲
if(条件) 文;直後の1文だけ
if(条件){ 文1; 文2; }ブロック内のすべての文

鬼滅の刃風にたとえると、ブロックは「ひとまとまりの連続技」です。
条件が true になったら、連続技の中にある複数の動きがまとめて発動します。

ブロックを確認する

次に、条件が true のときに複数のメッセージを表示するプログラムを見ていきます。

ファイル名:Sample2.java

import java.io.*;

class Sample2
{
    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("確認用の指令を表示しています。");
        }

        System.out.println("任務確認プログラムを終了します。");
    }
}

このプログラムでは、num が 5 のときに、ブロック内の2つの文が実行されます。

if(num == 5){
    System.out.println("第五任務が選ばれました。");
    System.out.println("確認用の指令を表示しています。");
}

条件が true の場合、2つの文が上から順番に実行されます。
条件が false の場合、2つの文はどちらも実行されません。

Sample2.javaで5を入力した場合

5 を入力した場合、num == 5 は true になります。

実行例は次のようになります。

任務番号を入力してください。
5
第五任務が選ばれました。
確認用の指令を表示しています。
任務確認プログラムを終了します。

この場合、ブロック内の2つの文が実行されています。

入力値条件 num == 5ブロック内の処理
5true2文とも実行される

ブロックを使うことで、条件が true のときに複数の処理をまとめて実行できます。

Sample2.javaで5以外を入力した場合

9 を入力した場合、num == 5 は false になります。

実行例は次のようになります。

任務番号を入力してください。
9
任務確認プログラムを終了します。

この場合、ブロック内の2つの文はどちらも実行されません。

入力値条件 num == 5ブロック内の処理
9false2文とも実行されない

ただし、最後の文は if文の外にあるため、必ず実行されます。

System.out.println("任務確認プログラムを終了します。");

ブロックの役割

ブロックの役割は、複数の文をひとまとまりとして扱うことです。

if(num == 5){
    System.out.println("第五任務が選ばれました。");
    System.out.println("確認用の指令を表示しています。");
}

この場合、{ } の中にある2つの文が、if文の対象になります。

場所if文の対象か
{ } の中対象
{ } の外対象外

ブロックがあることで、Javaに対して「この範囲を if文の中の処理として扱ってください」と伝えられます。

鬼滅の刃風にたとえると、ブロックは「条件がそろったときに発動する一連の型」です。
一撃だけではなく、構え、確認、指令表示までをまとめて実行するようなイメージです。

ブロックを付けないとどうなるのか

if文で複数の文を実行したいときに、ブロックを付け忘れると、意図しない動きになることがあります。

Javaでは、ブロックがない if文 は、直後の1文だけを対象にします。

たとえば、次のような形です。

if(num == 5)
    System.out.println("第五任務が選ばれました。");
    System.out.println("確認用の指令を表示しています。");

見た目では、2つの文が if文の中にあるように見えるかもしれません。
しかし、Javaではそう判断されません。

if文の対象になるのは、直後の1文だけです。

System.out.println("第五任務が選ばれました。");

その次の文は、if文の外です。

System.out.println("確認用の指令を表示しています。");

そのため、num が 5 でなくても、確認用の指令は毎回表示されます。

if文の対象か実行される条件
第五任務が選ばれました。対象num == 5 が true のときだけ
確認用の指令を表示しています。対象外常に実行される

これはとても間違えやすいポイントです。

人間はインデントを見て「ここまでが if文 の中だろう」と思いがちです。
しかし、Javaはインデントではなく、文法で判断します。

複数の文を if文 の対象にしたい場合は、必ず { } を使います。

インデントを使って読みやすくする

インデントとは、処理のまとまりが見やすくなるように字下げすることです。

たとえば、次のように書くと、if文の中の処理が分かりやすくなります。

if(num == 5){
    System.out.println("第五任務が選ばれました。");
    System.out.println("確認用の指令を表示しています。");
}

インデントそのものに文法上の意味はありません。
しかし、コードを読むときの分かりやすさに大きく関わります。

書き方読みやすさ
インデントが整っている処理のまとまりが分かりやすい
インデントが乱れているどこまでが if文 なのか誤解しやすい

実務でも学習でも、1文だけでもブロックを書くスタイルがよく使われます。

if(num == 7){
    System.out.println("特別任務の札です。慎重に進みましょう。");
}

この書き方なら、あとから処理を追加したくなったときも安全です。

たとえば、次のように文を増やしても、すべて if文の対象になります。

if(num == 7){
    System.out.println("特別任務の札です。慎重に進みましょう。");
    System.out.println("追加の確認を行います。");
}

ブロックを最初から書いておくと、読み間違いや追加時のミスを減らせます。

セミコロンの位置に注意する

if文を書くときは、セミコロンの位置にも注意が必要です。

正しい書き方は次のようになります。

if(num == 7)
    System.out.println("特別任務の札です。慎重に進みましょう。");

このとき、if の条件を書いた行にはセミコロンを付けません。

セミコロン
if(num == 7)付けない
System.out.println(...);付ける

if文の条件部分にセミコロンを付けてしまうと、思った通りに動かないことがあります。

if文の条件行にセミコロンを付けるとどうなるか

次のような書き方は注意が必要です。

if(num == 7);
    System.out.println("特別任務の札です。慎重に進みましょう。");

このコードは、コンパイルエラーにならないことがあります。
しかし、意図した動きにはなりません。

理由は、次の部分で if文の対象が空の文になってしまうからです。

if(num == 7);

このセミコロンだけで、if文の対象が終わった扱いになります。

そのため、次の文は if文とは関係なく、毎回実行されます。

System.out.println("特別任務の札です。慎重に進みましょう。");

つまり、num が 7 でも 7 でなくても、メッセージが表示されてしまいます。

書き方動き
if(num == 7) System.out.println(...);num == 7 が true のときだけ表示
if(num == 7); System.out.println(...);条件に関係なく表示される

このミスは見つけにくいので、if文を書いたら、条件の行に余計なセミコロンが付いていないかを確認しましょう。

if文を読むときのポイント

if文を読むときは、次の順番で確認すると分かりやすくなります。

確認すること見るポイント
条件は何かif の丸かっこの中を見る
true のとき何をするかif文の対象になっている文を見る
false のときどうなるか対象の文を飛ばして次へ進む
複数文があるか{ } の範囲を見る
セミコロンが正しいかif の条件行に余計な ; がないか見る

たとえば、次のコードを見るときは、

if(num == 7)
    System.out.println("特別任務の札です。慎重に進みましょう。");

System.out.println("任務札の確認が終わりました。");

まず条件を見ます。

num == 7

次に、true のときに実行される文を見ます。

System.out.println("特別任務の札です。慎重に進みましょう。");

最後に、if文の外にある文を確認します。

System.out.println("任務札の確認が終わりました。");

この流れで読むと、どの処理が条件付きで、どの処理が常に実行されるのかが分かりやすくなります。

if文を理解するための重要ポイント

if文を学ぶときは、次の点を押さえておくと安心です。

ポイント内容
条件は true または false になるif文は条件の結果で動く
true のときだけ実行されるfalse のときは対象の処理を飛ばす
false でもプログラム全体は止まらないif文の次の処理へ進む
ブロックを使えば複数文をまとめられる{ } の中がひとまとまりになる
ブロックがないと直後の1文だけが対象インデントだけでは範囲を指定できない
if の条件行にセミコロンを付けない余計な ; は誤動作の原因になる
1文でもブロックを書くと安全あとから処理を追加しやすい

if文は短い構文ですが、プログラムの流れを変える大きな力を持っています。

if文は条件分岐の第一歩

if文は、Javaで条件分岐を学ぶための最初の基本です。

条件が true のときだけ処理を実行する。
条件が false なら処理を飛ばして次へ進む。

この考え方が、これから学ぶ if~else文 や if~else if~else文 の土台になります。

構文役割
if文true のときだけ処理する
if~else文true のときと false のときで処理を分ける
if~else if~else文複数の条件を順番に調べる

まずは、if文の基本である「条件が true のときだけ実行する」という感覚をしっかり身につけることが大切です。

鬼滅の刃風にたとえると、if文は「条件がそろったときだけ発動する基本の型」です。
この型を理解できると、複数の条件を組み合わせた応用の型にも進みやすくなります。

Javaで実用的なプログラムを書くためには、条件によって処理を変える力が欠かせません。
if文は、その第一歩になる大切な構文です。