switch (x)
{
case A:
case B:
case C:
.doSomething()
}
これらの 3 つのケースを 1 行にまとめる方法はありますか? たとえば、このようなもの
case A, B, C:
ですか?
3 に答える
改行を削除してそれらをcase
すべて同じ行に配置する以外は、いいえ。
case
3 つのキーワードと 3 つのが必要:
です。
詳細が必要な場合は、JLS のセクション 14.11 を参照してください。特に:
SwitchLabel:
case ConstantExpression :
case EnumConstantName :
default :
SwitchLabelcase A,B,C:
のようなものを受け入れる文法のパターンはありません。
ただし、複数のケースが同じことを行う場合、例のようにケースを構造化するのが一般的です。
switch (value) {
case 1:
case 3:
case 5:
System.out.println("It's a positive odd number less than 7!");
break;
case 4:
case 8:
System.out.println("It's a multiple of 4 between 1 and 9!");
break;
default:
System.out.println("It's just another boring number.");
break;
}
Java プログラマーは、通常、このようなコードを読むと明確に理解できます。複数のケースを 1 行に入れる (つまり、改行をしない) ことはあまり一般的ではなく、典型的なプログラマー (誤って改行を削除したと思うかもしれません) が一見しただけでは明確に理解できないでしょう。
あなたが提案する方法ではありませんが、これを行うことができます(ドキュメントから):
class SwitchDemo2 {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1: case 3: case 5:
case 7: case 8: case 10:
case 12:
numDays = 31;
break;
case 4: case 6:
case 9: case 11:
numDays = 30;
break;
case 2:
if (((year % 4 == 0) &&
!(year % 100 == 0))
|| (year % 400 == 0))
numDays = 29;
else
numDays = 28;
break;
default:
System.out.println("Invalid month.");
break;
}
System.out.println("Number of Days = "
+ numDays);
}
}
たとえば、整数値を宣言する場合、int x int y int zetc を持つことができます。または、int x、y、z を持つことができます。ケースでそれが可能かどうか疑問に思っています。
それはまったく別の質問であり、あなたがしていることによっては可能です。
次のようなネストされたスイッチを持つことができます
switch(x) {
case 1:
switch(y) {
case 2:
switch(z) {
case 3:
または、このような可能な値の範囲がわかっている場合は、数式を使用できます
switch(x * 100 + y * 10 + z) {
case 123: // x = 1, y = 2, z = 3
明らかに、これはx、y、zが[0..9]の間であると仮定しています