飲み物を選択するキーが1,2,3ではなく、a, b, c になっています。ここで使われている case を見て下さい。
ソースコード源文件
|
---|
実行結果
|
String 型の文字列定数は二重引用符( " )ではさまれましたが、char 型の文字定数は一重引用符 ( ' )ではさまれます。
またここでは、String 型の変数 line の一番最初の文字(char)を一つ得るために、charAt というメソッドを使っています。line.charAt (位置)という形式で、文字列 line の中の「位置」にある文字を得ることができます。最初の文字の位置は0ですので、「char c = line.charAt(0);」のようにすると、line の最初の文字が変数 c に代入されます。
ソースコード源文件
|
---|
実行結果
|
「case '1':」と「case 'a':」が連続しており、途中に break がありません。このように複数の case を break なしで書いておくと、変数 c の値が '1' のときも、'a' のときも同じ処理が行われます。必要な break を書き忘れていけない、ということになります。さもないと、他の case のところまで、どんどん処理が進んでしまうからです。
double 型や String 型は整数ではありませんので、switch 文に使えません。また、long 型は整数ですが switch 文には使えません。
整数の定数を組み合わせると、整数の定数式が作れます。例えば、1 + 2 + 3は6という値を持つ定数式です。でも、変数 x を含んだ x + 1 + 2 は定数式ではありません。「コンパイルする時点で値が決まる」のが定数式です。式 x + 1 + 2は、この式を評価する時点での変数 x の値によって式の値が変化します。
文法的には switch 文の中の case の順番はどうでもかまいません。また、case の後にくる値は1, 100, 3000のように飛び飛びの値でもかまいません。
また、default はなくても(文法的には)かまいません。しかし、defaultは必ず書く癖をつけておいた方がいいでしょう。例えば、変数 n の値で処理を分岐させるとします。変数 n は「絶対に」1, 2, 3の値しかとらないとしましょう。すると、
上のように default がなくても文法的には正しい switch 文です。けれども、プログラムの他の部分に万一バグがあって、変数 n の値が4だったとしましょう。すると、この switch 文では処理1, 2, 3のどれも実行されず、しかも変数 n が4といまいます。それよりも、default を付けて以下のように、
としておいた方が、デバッグの助けになります。変数 n の値が異常なら、警告が表示され、早めに誤りを検出できるからです。文法的に許されていれば、プログラムには何を書いてもいいのですが、すべてが益になるとは限りません。どのように書いたらバグを見つけやすいプログラムになるかは、プログラマにまかせられているのです。
Chapter5 @ Java言語目録 @ HomeWork List @ 昭亮's Homepage