
さて、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日目:おみくじを作ってみよう!」もお楽しみに。

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

コメント