【Java初心者向け】switch文の使い方をマスター!if文との違いや書き方の基本を解説

docs

前回は、条件分岐の基本中の基本、if文について勉強しましたね!「もし〇〇だったら、これを実行!」っていう感じで、プログラムに賢い判断をさせるための呪文でした。(前回の記事はこちらからどうぞ! 【Java初心者向け】もしも〜なら!if文でプログラムを賢く動かそう! | ToolDocs

さて、if文はとっても便利なんですが、もし条件がたーくさんあったらどうなるでしょう?

「もしAだったら、これを実行!」 「もしBだったら、これを実行!」 「もしCだったら、これを実行!」 「もしDだったら、これを実行!」

…と、else ifを重ねていくと、なんだかゴチャゴチャして読みにくくなっちゃいますよね。まるで、何段ものタンスの中から目当ての服を探すような…(笑)

そんな時に大活躍するのが、今回ご紹介する**switch文**なんです!

switch文ってどんな時に使うの?

switch文は、**「ある1つの値に対して、複数の条件をチェックして、それぞれ異なる処理を実行したい時」**に使うのがとっても得意なんです。

例えば、

  • 曜日によって表示するメッセージを変えたい
  • 点数によって評価を分けたい
  • ユーザーが入力したコマンドによって処理を切り替えたい

なんて時に、switch文が本領を発揮します。

switch文の基本的な書き方を見てみよう!

まずは、基本的な形から見ていきましょう!

Java

switch (値) {
    case 値1:
        // 値が値1だった場合の処理
        break;
    case 値2:
        // 値が値2だった場合の処理
        break;
    case 値3:
        // 値が値3だった場合の処理
        break;
    default:
        // どのcaseにも一致しなかった場合の処理
        break;
}

なんだか難しそうに見えますか?大丈夫、一つずつ見ていけば簡単ですよ!

  • switch (値): 丸括弧の中に、条件として使いたい値(変数など)を入れます。この値が、後で出てくるcaseの値と比べられます。
  • case 値1:: もしswitchの括弧に入れた値が値1と同じだったら、ここの処理が実行されます。
  • break;: これがとっても重要!breakがないと、条件が一致した後も、次のcaseの処理まで実行されてしまうんです。(これを「フォールスルー」って言ったりします。)プログラムを意図しない動作から守るために、忘れずに書きましょう!
  • default:: どのcaseにも当てはまらなかった場合に実行される処理です。if文でいうところのelseみたいなものですね。これは省略することもできますが、予期せぬ入力があった場合などに備えて書いておくのがおすすめです。

例を見てみよう! 曜日でメッセージを変えるプログラム

では、実際にswitch文を使ってプログラムを書いてみましょう。今回は、現在の曜日によって表示するメッセージを変えるプログラムです。

Java

public class DayOfWeekMessage {
    public static void main(String[] args) {
        int day = 3; // 0=日曜, 1=月曜, 2=火曜, 3=水曜, ..., 6=土曜 (今回は水曜日を想定)

        String message;

        switch (day) {
            case 0:
                message = "今日は日曜日!ゆっくり休んでね!";
                break;
            case 1:
                message = "今日は月曜日!新しい週の始まりだね!";
                break;
            case 2:
                message = "今日は火曜日!がんばろうね!";
                break;
            case 3:
                message = "今日は水曜日!週の真ん中だね!";
                break;
            case 4:
                message = "今日は木曜日!あと少しで週末だ!";
                break;
            case 5:
                message = "今日は金曜日!週末に向けてラストスパート!";
                break;
            case 6:
                message = "今日は土曜日!楽しい週末を過ごしてね!";
                break;
            default:
                message = "不正な曜日です。"; // 0~6以外の値が来た場合
                break;
        }
        System.out.println(message);
    }
}

このプログラムを実行すると、「今日は水曜日!週の真ん中だね!」と表示されます。dayの値を0にすれば「今日は日曜日!ゆっくり休んでね!」と表示されるはずです。

if-else ifで書くよりも、どのcaseで何が実行されるのかが、より分かりやすくなったと思いませんか?

paizaで実行した結果

switch文の注意点

  • switchで使える値の種類: switchで使えるのは、int型やchar型、String型などの、比較的限定された型の値です。boolean型やdouble型などは使えないので注意しましょう。(Javaのバージョンによっては使える型が増えたりもしますが、まずは基本を覚えましょう!)
  • breakを忘れない!: さっきも言いましたが、breakを忘れると、意図しない動作になることが多いです。これはJava初心者がよくハマるポイントなので、特に気を付けてくださいね!

まとめ

今回は、複数の条件をスマートに扱うためのswitch文について学びました。

  • if文else ifが連なるような時に便利
  • ある1つの値に対して、複数の処理を振り分けたい時に使う
  • casebreakをセットで使う
  • どの条件にも当てはまらない時にdefaultを使う

switch文をマスターすれば、あなたのプログラムはもっと賢く、そしてもっと読みやすくなります!ぜひ、色々な条件で試してみてくださいね。

コメント

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