CodeGym /コース /JAVA 25 SELF /条件分岐: if else

条件分岐: if else

JAVA 25 SELF
レベル 3, レッスン 1
使用可能

1. if else 文

外部の状況がどう変わっても同じことしかしないのなら、プログラムはあまり役に立ちません。プログラムは状況に合わせて振る舞いを変え、ある場合にはある処理を、別の場合には別の処理を行える必要があります。

Java では、条件分岐 — キーワードの if と else — によってこれを実現します。条件が真かどうかに応じて異なる処理ブロックを実行できます。

条件分岐は3つの要素から成ります: 条件、コマンド1、コマンド2。条件が真であれば コマンド1 を、そうでなければ コマンド2 を実行します。二つが同時に実行されることはありません。一般的な形は次のとおりです。


if (uslovie)
   komanda1;
else
   komanda2;
条件分岐 if-else

if は「もし〜なら」、else は「それ以外」を意味します。人間の言葉で書くと次のようになります。


Esli uslovie istinno, to
   vypolnit' komanda1;
inache
   vypolnit' komanda2;
条件分岐 if-else を人間の言葉で

例:

// 画面には次のメッセージが表示されます: あなたはまだ子どもです

int age = 17;
if (age < 18)
   System.out.println("あなたはまだ子どもです");
else
   System.out.println("あなたはもう大人です");
// 画面には次のメッセージが表示されます: 暖かいです

int temperature = 5;
if (temperature < 0)
   System.out.println("外は厳しい寒さです");
else
   System.out.println("暖かいです");
// 画面には次のメッセージが表示されます: 免許試験を受けられます

int age = 18;
if (age == 18)
   System.out.println("免許試験を受けられます");
else
   System.out.println("車のために貯金しましょう");

2. コードブロック

条件が成り立つ(または成り立たない)ときに複数の処理を実行したい場合は、それらをブロックにまとめます。

ブロックにまとめるには、波括弧で「囲み」ます。一般形は次のとおりです。


{
   komanda1;
   komanda2;
   komanda3;
}

ブロック内の文の数は任意です。ゼロでも構いません。

if-else とブロックの組み合わせ例:

// 画面には次のメッセージが表示されます: まだ子どもだ。大人に反論しないで

int age = 17;
if (age < 18)
{
   System.out.println("まだ子どもだ");
   System.out.println("大人に反論しないで");
}
else
{
   System.out.println("あなたはもう大人です");
   System.out.println("最近の若者はまったく");
}
// 画面には次のメッセージが表示されます: 暖かいです

int temperature = 5;
if (temperature < 0)
{
   System.out.println("外は厳しい寒さです");
   System.out.println("帽子をかぶりなさい");
}
else
   System.out.println("暖かいです");
// 空のブロックが実行されます。画面には何も表示されません。 

int age = 21;
if (age == 18)
   System.out.println("免許を取得できます");
else
{
}

3. 演算子 if の簡略構文

else ブロックが不要な場合は省略できます。その場合、if は次の形になります。


if (uslovie)
{
    komanda1;
}
条件分岐 if

例:

int age = 19;
if (age >= 18)
{
    System.out.println("あなたは成人です!");
}

どのように動作するのか

条件が真ならブロックのコードが実行されます。偽なら何も起きず、プログラムは次へ進みます。

プログラムに else ブロックがあっても中身が空(波括弧の間に文がない)なら、取り除いて構いません。挙動は変わりません。

4. 条件の組み合わせ: else if

単純な「はい/いいえ」ではなく、複数の選択肢から選びたいことがあります。そんなときに使うのが else if です。

if (uslovie1)
{
    // 条件1が真のときに実行される
}
else if (uslovie2)
{
    // 条件2が真で、かつ条件1が偽のときに実行される
}
else
{
    // 上のどの条件にも当てはまらないときに実行される
}

例:

int hour = 13;
if (hour < 12)
{
    System.out.println("おはようございます!");
}
else if (hour < 18)
{
    System.out.println("こんにちは!");
}
else
{
    System.out.println("こんばんは!");
}

ここで起きていること

  • 12時より前なら朝。
  • 12時から18時までは昼。
  • それ以降は夕方。
  • プログラムは選択肢を一つだけ選びます。いずれかの条件に合致した時点で、残りは評価されません。

5. 図解: 分岐のフローチャート

フローチャートにすると次のようになります:

条件が複数ある場合:

これはテーブルトークRPGの分岐にとても似ています。左に行けばある結果、右に行けば別の結果、まっすぐ進めばまた別の何か、という具合です。

6. どんな条件を評価できるか

if の括弧の中には論理式を置きます。結果は true か false のいずれかです。

主な比較演算子:

演算子 意味 例
==
等しい
x == 5
!=
等しくない
x != 10
>
大きい
x > 0
<
小さい
age < 18
>=
以上
score >= 100
<=
以下
count <= 50

条件の例:

if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)

注意: =(1つ)は代入、==(2つ)は比較です。これは初心者が最もよくするミスの一つです。誤って次のように書くと:

if (x = 5) // エラー!

コンパイラがエラーとして教えてくれます。

7. 条件での文字列の扱い

Java における == による比較は数値に対しては正しく機能します。浮動小数点の比較に == を使うのは望ましくなく、文字列の比較に == を使うのは不可です。文字列はメソッド equals() を使って内容(参照ではなく)を比較してください。

文字列比較の細かな話は後で扱います。正しい比較方法の例は次のとおりです。

String password = console.nextLine();
if (password.equals("qwerty"))            // equals() メソッドを呼び出し、2つ目の文字列を渡しています
{
    System.out.println("ログインしました!");
}

8. 注意点とコツ:

中括弧は必要?不要?

if や else の直後に 1 文しかない場合、中括弧は省略できます。

if (age > 18)
    System.out.println("あなたは18歳より上です!");

// ただし、常に書いておくほうが安全です:
if (age > 18)
{
    System.out.println("あなたは18歳より上です!");
}

ヒント: 常に中括弧を書きましょう。コードを拡張するときの多くのエラーを防げます。

論理ミスに注意: 条件のかけ方に気をつける!

次のように書くと:

if (age > 18)
    System.out.println("あなたは18歳より上です!");
    System.out.println("ようこそ!");

コンパイラは次のように解釈します。

if (age > 18)
{
    System.out.println("あなたは18歳より上です!");
}

System.out.println("ようこそ!");

2行目は常に実行されてしまいます。両方を同じ分岐に含めるには中括弧が必要です。

1
タスク
JAVA 25 SELF, レベル 3, レッスン 1
ロック未解除
映画チケットの購入 🎬
映画チケットの購入 🎬
1
タスク
JAVA 25 SELF, レベル 3, レッスン 1
ロック未解除
外の天気の確認 ❄️
外の天気の確認 ❄️
1
タスク
JAVA 25 SELF, レベル 3, レッスン 1
ロック未解除
アカウントのロック解除 🔒
アカウントのロック解除 🔒
1
タスク
JAVA 25 SELF, レベル 3, レッスン 1
ロック未解除
時間帯による挨拶 ☀️
時間帯による挨拶 ☀️
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION