0

C++ には非常に便利な switch ステートメントがありますが、これが可能かどうかは java ではわかりません

switch(num)
{
   case 1 ... 9:
     do something
     break
   case 10 ... 19:
     do something
     break
   default: something
}

これはJavaで可能ですか、私は試しましたが、少なくともC ++とは異なり、機能しません。

ありがとう

4

7 に答える 7

3

Java のステートメントでは、一致するすべての値を明示的にリストする必要があります (もちろん句はswitch除きます)。default:かなりの範囲を実行している場合は、一連のifsを使用することをお勧めします。

if (num >= 1 && num <= 9) {
    do_something_A
} else if (num >= 10 && num <= 19) {
    do_something_B
} else {
    do_something_C
}

実数numに副作用がある場合 (または計算にコストがかかる場合)、一度評価してローカル変数に保存し、そのローカルを一連のテストで使用します。

于 2012-05-13T15:56:34.403 に答える
3

いいえ、できません。おそらく最も簡単な同等物は次のとおりです。

if (num >= 1 && num <= 9)
  doSomething();
else if (num >= 10 && num <= 19)
  doSomethingElse();
else
  doDefault();

限界クリーンアップは、inRangeユーティリティ関数を定義し、それをifステートメント内で使用することである可能性があります。

boolean inRange(int num, int min, int max) {
    return num >= min && num <= max;
}

...

if (inRange(num, 1, 9))
  doSomething();
else if (inRange(num, 10, 19))
  doSomethingElse();
else
  doDefault();
于 2012-05-13T15:57:20.783 に答える
1

はい、switchJava にはステートメントがあります。switch実際、これはC++ の場合と非常によく似ています。

ただし、C++ も Java も case ラベルの範囲をサポートしていません。

あなたが提示する特定の例では、一連のifステートメントを使用します。

if (num >= 1 && num <= 9) {
  ...
} else if (num >= 10 && num <= 19) {
  ...
} else {
  ...
}
于 2012-05-13T15:56:42.923 に答える
1

Java にはswitchステートメントがありますが、次のように使用する必要があります。

switch(num)
{
   case 1:
   case 2:
   case 3:
   case 4:
     //And so far with cases 
     //do something
     break
   case 10:
   case 11:
   case 12:
     //And so far ...
     //do something
     break
   default: something
}
于 2012-05-13T15:54:54.283 に答える
1

このような状況では、一連の if-else ステートメントを使用する方がはるかに実用的です。:)

    if(num >= 1 && num < 10) {
        //do something
    } else if(num >= 10 && num < 20) {
        //do something
    } else {
        //do something
    }
于 2012-05-13T15:59:32.970 に答える
1

あなたが話している機能は、実際には C++ に属していません。たとえば、GCCに存在する言語拡張です。しかし、通常、C++ ではif...を使用して範囲がチェックelseされ、Java でも同じ手法を使用する必要があります。

if (num >= 1 && num <= 9) {
    //Do something
} else if (num >= 10 && num <= 19) {
    //Do something else
} else {
    //Do something by default
}
于 2012-05-13T15:59:39.513 に答える
0

いいえ、範囲は許可されていません。if else 構造を使用する必要があります。

于 2012-05-13T15:55:49.903 に答える