switchで条件分岐をしてみよう

こんにちは、めのんです!

今回はswitch文による条件分岐を見ていきます。
変数が取り得る値があらかじめいくつか決まっていて、それに対して処理を振り分けたい場合にスッキリ書くことができます。

switchの基本

それでは具体的な例を挙げてみます。

このように「rank」という変数を用意してあげて初期値を2にしておきます。
このrankの値によっていろいろメッセージを出し分ける処理をswitch文を使って書いています。

最初にswitch (rank)のように書いて、波括弧の中にいくつかのcaseを書いていきます。
今回の場合はcase 1, case 2, case 3のように、rankが1, 2, 3だった場合の処理になっています。

ここでは、1位だったらゴールドメダル、2位だったらシルバーメバル、3位だったらブロンズメダルということで、それぞれに対応するメッセージを出力しています。

rankが1でも2でも3でもない場合はdefaultと書いたところが処理されて「no medal」と出力されます。

case 値のあとには必ずコロン「:」を書いてください。
そして、処理を書いたあとには「break;」を書きます。
初心者はこのbreak;をうっかり書き忘れることが多いので十分注意してください。

それでは実際に動かして試してみましょう。

rankが2だったので「Silver」が出力されました。
是非ほかの値でも試してみてください。

switchで処理できるのは整数値だけです。
文字や論理値は一種の整数なので処理できますが、浮動小数点数や文字列を扱うことはできないことに注意してください。

複数の値に対応した処理

次は、1位のときは「Great!」、2位と3位のときは「Good!」、それ以外は「so so …」と出力するように変更してみましょう。

このように、複数のcaseを並べて書くことができます。
これでrankが2でも3でも「Good!」と出力されるようになったはずです。

rankの値が2でしたので「Good!」と出力されましたね。
ほかの値でも試してみてください。

switchの括弧内での宣言

ifの条件でも変数を宣言できたように、switchでも丸括弧の中で宣言することができます。

ここではswitchの括弧の中で「value」という変数を宣言しています。
今回の内容程度であればrankをそのまま使っても変わりませんが、もっと複雑な式を書くこともできますので、そんなときはいったん変数に置き換えた方が便利なこともあります。

case 2と3のところでこの変数valueを使って実際の順位を出力しています。


こうした複雑な条件分岐はifを使っても書くことができるのですが、switchを使うとスッキリ書くことができます。
是非覚えておいてください。