難しいワードは使わずに分かりやすくをモットーに書いています。
はじめに
今回は…「switch」について。
switchは「~の場合」ということを表すときに使用するプログラム。
「条件」みたいな感じで、「条件AにあったらBの処理をする、条件Aに合わなかったら条件Cをチェック…」という流れ。
では詳しく見ていく。
場合を表すswitchの使い方
ifやelse ifを使った条件構文と使い方は似ていて、条件に合った時点でそれ以降の{}内の処理は行われない。
switch(△) ※△が基準で、この△が条件に合えばプログラムが処理される
case ◇:
switchの()内の値が◇の時に行うプログラム
break;
case ▽:
switchの()内の値が▽の時に行うプログラム
break;
case ○:
switchの()内の値が〇の時に行うプログラム
…
default:
それ以外の時に行うプログラム
break;
}
まず「switch」を書き、()の中に最初に設定した「int △=○」の「△」を書く。
そして「case」を使って、場合分けをする。
例えば、△の値が◇だった場合の処理、▽だった場合の処理、〇だった場合の処理…といった感じ。
caseと処理内容を書いたら、その都度「break;」を書く。
場合分けをする分だけ「case」とずっと続けていき、最後は「default」を使う。
ここも最後には「break;」を使う。
注意するのは、caseやdefaultの次にある記号は「;(セミコロン)」ではなく「:(コロン)」を使うこと。
一回間違って入力したからエラーばっかりでた…。
これを実際に使ってみたのが下。
break; case 3:System.out.println(“数字は3”);
break; case 5:System.out.println(“数字は5”);
break; case 7:System.out.println(“数字は7”);
break; default:System.out.println(“それ以外”);
break;
}
これを実行すると…
と表示された。
switch構文を分解
switch構文をそれぞれ細かく見ていこう。
まず最初に「int A=5;」と宣言している。
※今回は「5」という風に数字を入れているが、「乱数」を使ってランダムで値を出現させるプログラムを使用すると面白い。(乱数についてはまた後日…)
乱数については以下参照。
乱数を発生させたい Javaプログラミング初心者の記録vol.23
そして次に「switch」を使用。
switchの()内には検証する対象を入力する。
今回は「A」が検証する対象となるため、「switch(A)」とした。
switch(5)って書いても同じだけどね。
Aがどんな数字なのかによって表示させる答えを変えたいということ。
Aがどんな答えになるかを想定して場合分けしていく。
今回は数字が「1」、「3」、「5」、「7」、「それ以外」の5つに分けた。
そこで使うのが「case」。
「数字が1の場合」ということを表すのに「case 1:」と表記する。
そして数値が「1」だった場合に処理するプログラムを記述。
今回は「数字は1」と表示させたかったから「System.out.println(“数字は1”);」と記述。
そして1つの「case」を書き終えたら「break;」と書く。
これを「3」の場合、「5」の場合、「7」の場合、「それ以外」と続けていく。
ただ、最後の「それ以外」を書くときはcaseではなく「default:」を使うこと。
breakを使うということは同じ。
defaultは「case 1」などのように値をつけず、単体で使う。
要は、これまで場合分けした「case」に当てはまらないものがこの「default」。
「上記のもの以外」ってこと。
これを実行すると「A」は「5」だから「case 5」がこの中では正しいため、「case 5」の場合のプログラム処理「System.out.println(“数字は5”);」が行われ、「数字は5」と表示される。
break;を書く理由
基本的にswitchは()内のものと「case」の値が合っているかどうかをチェックしていって、合っているものを表示する。
だけど…
もし「break;」がなければ「case」と合致した以降の行のプログラムが、合っているか間違ってるかに関わらず、全て表示されてしまう。
今回でいうと、もし全てに「break;」がなければ…
数字は5
数字は7
それ以外
このように、caseと合っているもの以降の情報がすべて表示されてしまうから、それをさせないように「break;」を使う。
「case 5」はここで終わりよ!「case 7」は関係ないわ!って感じかな?
「break;」はそれぞれのcaseごとにつけるのを忘れないこと。
文字列でも使用できるswitch
上ではint A=5と「5」という数字を使っているが、「ご」と文字で表すことも可能。
その場合、
break; case さん:System.out.println(“数字は3”);
break; case ご:System.out.println(“数字は5”);
break; case なな:System.out.println(“数字は7”);
break; default:System.out.println(“それ以外”);
break;
}
これを実行すると…
と表示された。
switchの()内とcaseが合っていればそれが文字列でもOKということ。
ただ、文字列を使う場合はintではなく「String」をつかうこと」。
intはこれまで何度も見てきたが「整数を表す変数の型」であって、文字を表すことはできない。
Aには「ご」という文字が入っているから、使うのは「文字列を表す変数の型」の「String」。
StringのSは大文字だよ。
まとめ
switchは条件と似てるけど、breakがないと条件に合致したもの以降は真偽に関わらず全部表示されるから「break」は忘れずに。
条件?場合?って色々混乱しそうだから、switchも条件を表す構文の1つと私は思ってる。
(そう思ってる…)
構文の特徴を抑えて時と場合によって使い分けていく。
コメント