else if の構文の方が汎用性があり、switch を置き換えることが可能です。
switch (チェックする値) {
case 値1: 実行する文;
case 値2: 実行する文;
case 値3: 実行する文;
case 値4: 実行する文;
default: 実行する文;
}
これは全体がひとつのブロックになっています。チェックする値はlongを除く整数型の値のみ。チェックした値が、case の後に書いてある値と等しいところにジャンプします。すべての case に当てはまらない場合、default: にジャンプします。default: がない場合はブロックの外に抜けます。
気をつけなければならないのは、単に合致する値の部分にジャンプするだけだと言うことです。たとえば値2にジャンプしてその後の文を実行した後、そのままだと値3以降の文も実行してしまうということです。普通次のように break 文を入れて使います。この文に来ると、{ } の外に抜け出します。
今度は break; を入れたので、case 2 の場合は、y = b のみを実行します。
switch (x) {
case 1:
y = a;
break;
case 2:
y = b;
break;
case 3:
y = c;
break;
case 4:
y = d;
break;
default:
y = e;
}
整数値でなければならないという制約がある分多少見やすいかもしれません。ただ else if と同様の使い方をするには break; を忘れないように注意しなければなりません。
この他に、記号 ? による条件判断もあります。これはC言語でよく使われていたものです。 ? の前にある条件で判定とし、 成立するならば ? 直後の命令を、false ならば : で区切られた後の命令を実行します。
( x > 0 ) ? y = a : y = b;