9日目:else if文

Java超・入門物語
しがない先生
しがない先生

さて、9日目の今日は、「else if文」というものについて学んでいこうか。

ぽっちゃん
ぽっちゃん

今日もよろしくお願いします!

しがない先生
しがない先生

「else if」文の本題に入る前に、前回のプログラムは「まだ改善すべきポイント」があるから、これについて少し考えてみよう。

ぽっちゃん
ぽっちゃん

ん?

前回のプログラムってこれのことですか?

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "晴れ";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else {
            System.out.println("雨です");
        }
    }
}
晴れです
しがない先生
しがない先生

そうこれだよ。

「if文」を使って、

・もし天気が「晴れ」なら「晴れです」と表示

・それ以外の天気なら「雨です」と表示

する条件分岐プログラムを作ったよね。

ぽっちゃん
ぽっちゃん

う〜ん。

でもエラーは出てないし、ちゃんと「晴れ」のときと「雨」のときで表示が変わっていますし、、、

ぽっちゃん
ぽっちゃん

一体何が問題なんですか。。。?

しがない先生
しがない先生

そうだね。

でもこんな場合だとどうなるだろうか?

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "曇り";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else {
            System.out.println("雨です");
        }
    }
}
雨です
ぽっちゃん
ぽっちゃん

そうか、天気が「曇り」のときでも「雨です」と表示されてしまうのか!

しがない先生
しがない先生

そういうこと。

今の状態だと、「晴れ以外の全ての天気は雨」になってしまうからね。

ぽっちゃん
ぽっちゃん

では一体どうすれば。。。

しがない先生
しがない先生

こんなときこそ今日のテーマである「else if文」というものを使うんだ。

しがない先生
しがない先生

else if文は「if文を追加したいときに使う」ものなんだけど、まぁプログラムを見た方が早いと思うから、早速見ていこう。

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "曇り";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else if (tenki.equals("曇り")) {
            System.out.println("曇りです");
        } else {
            System.out.println("雨です");
        }
    }
}
曇りです
ぽっちゃん
ぽっちゃん

おお!

今度はちゃんと「曇り」まで表示されてる

しがない先生
しがない先生

「else if文」を書くときは場所に気をつけてね。

具体的には、「if」と「else」の間に挟んでね。

ぽっちゃん
ぽっちゃん

「else if」の後は、「if」文と同じように「もし〇〇ならば」の〇〇を書けばいいんですね。

しがない先生
しがない先生

そういうこと。

そしてこの「else if文」のいいところは、何個書いてもOKというポイントなんだ。

ぽっちゃん
ぽっちゃん

なるほど、ということは、、、

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "雪";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else if (tenki.equals("曇り")) {
            System.out.println("曇りです。");
        } else if (tenki.equals("雪")) {
            System.out.println("雪です");
        } else {
            System.out.println("雨です");
        }
    }
}
雪です
ぽっちゃん
ぽっちゃん

こんな感じで「雪」とかの色々な天気を追加できちゃうってことか!

しがない先生
しがない先生

お見事!

さらに追加したければ「雷」や「雹(ひょう)」なんかも「else if文」で追加できるよ。

ぽっちゃん
ぽっちゃん

よ〜し。

これで「else if」文はバッチリだ!

今日のレッスンはこれで終わりですね!!!

しがない先生
しがない先生

いや、まだだよ。

ぽっちゃんは「とある重大な欠点」に気づいていない。。。

ぽっちゃん
ぽっちゃん

なんかいきなりミステリーっぽくなったな。。。

ぽっちゃん
ぽっちゃん

一体まだ何がいけないというのですか?

しがない先生
しがない先生

もし天気が「快晴」の場合だったら、、、どうなるかな?

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "快晴";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else if (tenki.equals("曇り")) {
            System.out.println("曇りです");
        } else if (tenki.equals("雪")) {
            System.out.println("雪です");
        } else {
            System.out.println("雨です");
        }
    }
}
雨です
ぽっちゃん
ぽっちゃん

なるほど、、、雨になってしまうのか。。。

ぽっちゃん
ぽっちゃん

でもまぁこれは僕でも理由がわかります。

「もし天気が快晴ならば」という「else if文」がないからですよね。

しがない先生
しがない先生

うん、それはそうなんだけど、根本的なミスとして「else」の中で「雨です」と表示させているのは間違いなんじゃないかな?

ぽっちゃん
ぽっちゃん

え?どうしてですか?

しがない先生
しがない先生

もちろん、今思い出せる限りの天気の種類を「else if文」で網羅してもいいんだけど、もし仮に「太陽」とかの変な文字列が変数tenkiに入ってしまったらどうなるかな?

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "太陽";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else if (tenki.equals("曇り")) {
            System.out.println("曇りです");
        } else if (tenki.equals("雪")) {
            System.out.println("雪です");
        } else {
            System.out.println("雨です");
        }
    }
}
雨です
ぽっちゃん
ぽっちゃん

なるほど、、、

全部「else文」の方に吸収されてしまうわけか。。。

しがない先生
しがない先生

そう。

その結果全て「雨です」と表示されてしまうから、もし仮に、これが日本人みんなが使っている人気の「お天気アプリ」だとすると、最悪の場合、国全体が混乱してしまう恐れがあるんだ。

ぽっちゃん
ぽっちゃん

ヒェっ!!!

炎上、謝罪、実装者の責任追求、クビ、裁判、損害賠償、、、

しがない先生
しがない先生

冗談だよ笑

でもまぁ今の状態だとあまり良くないから、未然に修正する必要があるよね。

ぽっちゃん
ぽっちゃん

う〜ん。

どうすればいいんだろう。。。

しがない先生
しがない先生

今「else文」の中に「雨です」と表示されている状態だけど、これを、

天気が「雨」の場合は「else if文」で処理を行う

「else」の中は想定していない天気に対してだけカバーする

ようにすればいいんだ。

ぽっちゃん
ぽっちゃん

何がなんだかわかりません。

しがない先生
しがない先生

いやもうちょい頑張れよ!!

しがない先生
しがない先生

まぁつまり下のようなプログラムってこと。

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "太陽";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else if (tenki.equals("曇り")) {
            System.out.println("曇りです");
        } else if (tenki.equals("雪")) {
            System.out.println("雪です");
        } else if (tenki.equals("雨")) {
            System.out.println("雨です");
        } else {
            System.out.println(tenki + "という天気は存在しません");
        }
    }
}
太陽という天気は存在しません
しがない先生
しがない先生

少しプログラムが長くなっちゃったけど、こうすることによって「想定外の天気はどんな天気だったのかがわかる」という風になったよ。

ぽっちゃん
ぽっちゃん

なるほど。

確かにこれだと「太陽」なんて天気はないから、すぐに間違いだと気づくことができますね。

しがない先生
しがない先生

ズバリ、そういうこと。

さらにこれでもしうっかり「雷」をelse if文に追加するのを忘れていたとしても、、、

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        String tenki = "雷";
        
        if (tenki.equals("晴れ")) {
            System.out.println("晴れです");
        } else if (tenki.equals("曇り")) {
            System.out.println("曇りです");
        } else if (tenki.equals("雪")) {
            System.out.println("雪です");
        } else if (tenki.equals("雨")) {
            System.out.println("雨です");
        } else {
            System.out.println(tenki + "という天気は存在しません");
        }
    }
}
雷という天気は存在しません
しがない先生
しがない先生

こんな感じで表示してくれるから、書き忘れも気づくことができるんだ。

ぽっちゃん
ぽっちゃん

確かにこっちの方がいいですね!

もし自分で条件分岐を書く機会があれば、こう書こうと思います。

しがない先生
しがない先生

そうだね。

ではやっとこれで「else if文」については終了だよ。

ぽっちゃん
ぽっちゃん

終わると思ったら終わらない、しかしこれでついに終わりか。。。

しがない先生
しがない先生

明日は「if文」の応用編として「おみくじ」ができるプログラムを作っていこうと思う。

ぜひ次回「9日目:おみくじを作ってみよう!」もお楽しみに。

ぽっちゃん
ぽっちゃん

しがない先生、今日もありがとうございました!

コメント

タイトルとURLをコピーしました