【Javaプログラム入門】初心者向けに「if -条件分岐-」をわかりやすく解説!

今回は、条件分岐を行う「if文」について解説します。

プログラムでは、特定の条件によって処理を分岐させることがたくさんあります。

この「if文」をうまく使うことで、いろいろなパターンの処理を作ることができます。

if文」の学習ポイントは以下になります。

if文の学習ポイント
  • 単数分岐、複数分岐
  • 条件式
    • 比較演算子
    • 論理演算子

if文は、プログラム構文を覚えるより、条件分岐のパターンを考えることが難しいです。

「この場合は、こういう条件で3パターンに処理が分岐する」

と言った感じで、正しく場合分けできるように訓練しましょう!

それでは、if文について解説していきます。

目次

条件分岐とは? if文のイメージをつかもう!

最初に、if文のイメージを理解することからやっていきましょう。

通常のプログラムの流れif文のプログラムの流れ を図に書きました。

if文の処理の流れイメージ

通常のプログラム(処理)の流れは、まっすぐの道を上から下に進んでいきます。
※プログラムは基本的に一方通行の道を上から下にまっすぐ進むイメージです

それに対して、if文のプログラム(処理)の流れは、途中で経路が分かれます。

① 特定の条件の場合に分岐するプログラム(処理)の経路
② 通常のプログラム(処理)の経路 ※①の分岐した経路に進まない場合はこっち

経路が分かれるタイミングで、その時の状態に応じて、条件が一致する経路を選択して進みます。
この経路が分かれることを条件分岐といいます。

なんとなく、if文のイメージが掴めたでしょうか?

次は、if文のプログラム構文を学習していきましょう!

if文のプログラムの書き方

if文のプログラム構文を解説していきます。

if文のプログラム構文は、以下の要素で構成されています。

if文の構成要素
  • 単数分岐、複数分岐
  • 条件式
    • 比較演算子
    • 論理演算子

単数分岐、複数分岐の書き方

if文には、分岐が単数(1つ)の場合と、複数(2つ以上)の場合があります。

それぞれのプログラム構文を見てみましょう。

単数分岐の書き方

単数分岐

サンプルプログラムで詳しく説明します。

【サンプル】

※ageはint型の変数とする

if(age < 18){
    System.out.println("未成年です");
}

上記のサンプルでは、
ifの条件式が「age < 18」となっています。
つまり「ageの値が18より小さい」という条件によって、プログラムの経路が分岐します。

例えば、
ageの値が17の場合は、① 特定の条件の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“未成年です”);」という処理が実行されます。
ageの値が18の場合は、② 通常のプログラム(処理)の経路 に進みます。
 ※特に処理は実行されません。

複数分岐の書き方

複数分岐の書き方は、以下の3パターンを覚えましょう。

複数分岐

サンプルプログラムで詳しく説明します。

【サンプル パターン①】

※ageはint型の変数とする

if(age < 18){
    System.out.println("未成年です");
}else{
    System.out.println("成年です");
}

上記のサンプルでは、
ifの条件式が「age < 18」となっていて、さらに、elseの分岐もあります。
この場合は「ageの値が18より小さい」か「それ以外(ageの値が18以上)」という条件によって、プログラムの経路が分岐します。

例えば、
ageの値が17の場合は、① 特定の条件(age < 18)の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“未成年です“);」という処理が実行されます。
ageの値が18の場合は、① 特定の条件(else)の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“成年です”);」という処理が実行されます。


【サンプル パターン

※ageはint型の変数とする

if(age < 18){
    System.out.println("未成年です");
}else if(age < 20){
    System.out.println("成年ですが、20歳未満です");
}

上記のサンプルでは、
ifの条件式が「age < 18」となっていて、さらに、else ifの条件式が「age < 20」となっています。
この場合は「ageの値が18より小さい」か「ageの値が20より小さい」という条件によって、プログラムの経路が分岐します。

例えば、
ageの値が17の場合は、① 特定の条件(age < 18)の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“未成年です”);」という処理が実行されます。
ageの値が18の場合は、① 特定の条件(age < 20)の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“成年ですが、20歳未満です”);」という処理が実行されます。
ageの値が20の場合は、② 通常のプログラム(処理)の経路 に進みます。
 ※特に処理は実行されません。


【サンプル パターン

※ageはint型の変数とする

if(age < 18){
    System.out.println("未成年です");
}else if(age < 20){
    System.out.println("成年ですが、20歳未満です");
}else{
    System.out.println("成年です");
}

上記のサンプルでは、
ifの条件式が「age < 18」となっていて、さらに、else ifの条件式が「age < 20」となっています。
さらに、elseの分岐もあります。
この場合は「ageの値が18より小さい」か「ageの値が20より小さい」か「それ以外(ageの値が20以上)」という条件によって、プログラムの経路が分岐します。

例えば、
ageの値が17の場合は、① 特定の条件(age < 18)の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“未成年です”);」という処理が実行されます。
ageの値が18の場合は、① 特定の条件(age < 20)の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“成年ですが、20歳未満です”);」という処理が実行されます。
ageの値が20の場合は、① 特定の条件(else)の場合に分岐するプログラム(処理)の経路 に進みます。
 ※「System.out.println(“成年です”);」という処理が実行されます。


ここまで、単数分岐と複数分岐の条件分岐の書き方を説明しました。

経路が分岐するイメージを思い浮かべて、if文を書いてもらえればと思います。

条件式の書き方

ここからは、条件式の書き方を詳しく見ていきましょう。

条件式は、以下の2つの要素で構成されています。

条件式の構成要素
  • 比較演算子
  • 論理演算子

さっそく、比較演算子から学習していきましょう。

比較演算子

比較演算子とは、

2つのモノの関係性を比べて、その関係性が正しいか正しくないかという結果(真偽値)を返すもの。

と定義されています。

言葉だけではわかりにくいと思うので、具体的に比較演算子がどのようなものかと言うと、
if(a == b)という条件式の「 == 」であったり、
if(a < b)という条件式の「 < 」が比較演算子になります。

それぞれの意味を説明すると、
==」 は、「(==の)左と右が等しい」関係性が正しいか正しくないかという結果を返します。
<」は、「(<の)左が右より小さい」関係性が正しいか正しくないかという結果を返します。

もう少し詳しく具体例を見ていきましょう。

 a == b の比較演算子の結果(真偽値)は、
 ① a が 10、b が 10 の場合、10 == 10となり、aとbが等しいため、真(true) となります。
 ② a が 10、b が 20 の場合、10 == 20となり、aとbが等しくないため、偽(false) となります。

 a < b の比較演算子の結果(真偽値)は、
 ① a が 10、b が 10 の場合、10 < 10 となり、aがbより小さくないため、偽(false) となります。
 ② a が 10、b が 20 の場合、10 < 20 となり、aがbより小さいため、真(true) となります。

比較演算子が、2つの対象の関係性を比べた結果を返すと言うことがわかったでしょうか。


最後に、比較演算子の一覧表とサンプルプログラムを記載します。

[ 比較演算子の一覧表 ]

比較演算子使用例意味具体例
==a == baとbが等しい場合
真(true)
① a=10、b=10の場合、10 == 10 ⇒ 真(true)
② a=10、b=20の場合、10 == 20 ⇒ 偽(false)
<a < baがbより小さい場合
真(true)
① a=10、b=10の場合、10 < 10 ⇒ 偽(false)
② a=10、b=20の場合、10 < 20 ⇒ 真(true)
<=a <= baがb以下の場合
真(true)
① a=10、b=10の場合、10 <= 10 ⇒ 真(true)
② a=10、b=20の場合、10 <= 20 ⇒ 真(true)
③ a=20、b=10の場合、20 <= 10 ⇒ 偽(false)
>a > baがbより大きい場合
真(true)
① a=10、b=10の場合、10 > 10 ⇒ 偽(false)
② a=20、b=10の場合、20 > 10 ⇒ 真(true)
>=a >= baがb以上の場合
真(true)
① a=10、b=10の場合、10 >= 10 ⇒ 真(true)
② a=20、b=10の場合、20 >= 10 ⇒ 真(true)
③ a=10、b=20の場合、10 >= 20 ⇒ 偽(false)
!=a != baとbが等しくない場合
真(true)
① a=10、b=10の場合、10 != 10 ⇒ 偽(false)
② a=10、b=20の場合、10 != 20 ⇒ 真(true)

【サンプル】

if(a == b){
    System.out.println("aとbが等しい");
}

if(a < b){
    System.out.println("aがbより小さい");
}

if(a <= b){
    System.out.println("aがb以下");
}

if(a > b){
    System.out.println("aがbより大きい");
}

if(a >= b){
    System.out.println("aがb以上");
}

if(a != b){
    System.out.println("aとbが等しくない");
}

論理演算子

いよいよ最後です。
論理演算子について説明していきます。

論理演算子は、複数の条件式の真偽を組み合わせて、総合的に真偽を判断するときに使用します。

論理演算子の一覧を以下に記載します。

論理演算子名称使用例意味
&&論理積(条件式1) && (条件式2)条件式1と条件式2がともに真(true)の場合
真(true)
||論理和(条件式1) || (条件式2)条件式1と条件式2のどちらかでも真(true)の場合
真(true)
!否定!(条件式)条件式が真(true)ではない場合
真(true)

【&&(論理積) の サンプル】

if(a == 1 && b == 2){
    System.out.println("「a が 1」 かつ 「b が 2」 です");
}

上記のサンプルは、if( 条件式1 && 条件式2 )の論理積の形式となっています。
 条件式1:a == 1
 条件式2:b == 2
条件式1 と 条件式2 がどちらも真(true)の場合に、「条件式1 && 条件式2」は、真(true) となります。

具体的な値で例を示すと、以下のような結果になります。

ab条件式1
a == 1
条件式2
b == 2
条件式1 && 条件式2
a == 1 && b == 2
12真(true)真(true)真(true)
13真(true)偽(false)偽(false)
22偽(false)真(true)偽(false)
23偽(false)偽(false)偽(false)

||(論理和) の サンプル】

if(a == 1 || b == 2){
    System.out.println("「a が 1」 または 「b が 2」 です");
}

上記のサンプルは、if( 条件式1 || 条件式2 )の論理和の形式となっています。
 条件式1:a == 1
 条件式2:b == 2
条件式1 と 条件式2 のどちらかでも真(true)の場合に、「条件式1 || 条件式2」は、真(true) となります。

具体的な値で例を示すと、以下のような結果になります。

ab条件式1
a == 1
条件式2
b == 2
条件式1 || 条件式2
a == 1 || b == 2
12真(true)真(true)真(true)
13真(true)偽(false)真(true)
22偽(false)真(true)真(true)
23偽(false)偽(false)偽(false)

【!(否定) の サンプル】

if(!(a < b)){
    System.out.println("「a が b より小さい」の否定 ⇒ 「a が b 以上」 です");
}

上記のサンプルは、if( 条件式 )の否定の形式となっています。
 条件式:a < b
条件式 が 偽(false)の場合に、「!(条件式)」は、真(true) となります。

具体的な値で例を示すと、以下のような結果になります。

ab条件式
a < b
!( 条件式 )
!( a < b )
21偽(false)真(true)
22偽(false)真(true)
23真(true)偽(false)

論理演算子について説明してきました。

3つの論理演算子の使い方を覚えておきましょう。

まとめ: if文を使ってプログラムの流れを自由に分岐しよう!

今回は、条件分岐を行う「if文」について解説しました。

if文の重要ポイントを押さえて、しっかりと理解しましょう。

if文の学習ポイント
  • 単数分岐、複数分岐
  • 条件式
    • 比較演算子
    • 論理演算子

if文もプログラミングでは必須の知識です。

プログラムを作成するときは、どうしてもif文(条件分岐)が必要なケースが出てきます。
if文を使わずにプログラムを作ることは難しいかなと思います。

ただ、if文を使用するときは、できるだけ条件式を簡単に書くように工夫した方がよいです。

論理演算子を使用すれば、条件式を10個でも20個でも組み合わせることができます。

しかし、条件式の数が多ければ多いほど、最終的な結果が真(true)なのか偽(false)なのか分からなくなります
プログラムを作った自分でさえ、わからなくなる場合があります。

そんなことにならないように、「条件式はシンプルに」を心がけましょう!


次のステップ

学習した基礎知識を使ってJavaアプリケーションを作ってみたい方は、以下の記事の演習にぜひチャレンジしてみてください!※きっとよい勉強になります


効率よく最速で学習したい方、転職を強く目指している方は、プログラミングスクールの利用も有効です!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

SE歴16年。
システム開発会社で開発部長をしています。

【主な仕事内容】
 ・Webシステム開発
 ・新入社員育成
 ・社員採用

IT業界が好きで、プログラミングが好きです。
社内の新入社員育成に情熱を注いでいます。

コメント

コメントする

CAPTCHA


目次
閉じる