23

switch ステートメントを使用して、変数が数値より大きいかどうかを確認する最良の方法は何ですか? または、if-else を使用することをお勧めしますか? 私はそのような例を見つけました:

int i;

if(var1>var2) i = 1;
if(var1=var2 i = 0;
if(var1<var2) i = -1;

switch (i);
{
    case -1:
    do stuff;
    break;

    case 0:
    do stuff;
    break;

    case 1:
    do stuff;
    break;

}

switch ステートメントで「以上」を使用することについて、初心者に何を伝えることができますか?

4

8 に答える 8

23

これがあなたが求めているものかどうかはわかりませんが、次のようにすることができます:

int var1;
int var2;

int signum = Long.signum((long)var1 - var2);
switch(signum) {
    case -1: break;
    case 0: break;
    case 1: break;
}
于 2013-08-29T12:02:00.480 に答える
12

if(var1>var2){}else if (var1==var2) {} else {}コンストラクトを強くお勧めします。ここでスイッチを使用すると、インテントが非表示になります。breakaが誤って削除された場合はどうなるでしょうか。

Switch は、比較ではなく、列挙値に対して便利で明確です。

于 2013-08-29T12:02:31.970 に答える
5

Java は、ステートメント内の範囲ではなく直接値のみをサポートするcaseため、スイッチを使用する必要がある場合は、最初にオプションにマッピングしてから、それをオンにする必要があります。ただし、これはかなり過剰です。if ステートメントを使用してください。

于 2013-08-29T12:02:15.593 に答える
3

switch ステートメントは、特定の値が返されたときにコードを実行するためのものです。if then else を使用すると、1 つのステートメントで値の範囲を選択できます。複数の範囲を調べたい場合は、次のようなことをお勧めします (個人的には Integer.signum メソッドを好みます)。

int i;

if (var1 > var2) {
  i = 1;
}
else if (var1 == var2) {
  i = 0;
}
else {
  i = -1;
}
于 2013-08-29T12:04:49.497 に答える
0

残念ながら、Java ではそれを行うことはできません。CoffeeScriptまたは他の言語で可能です。

「何かをする」を追加のメソッドに移動して、 if--ステートメントを使用することをお勧めします。elseそうすれば、if-else を明確に読みやすいコードに保つことができます。

于 2013-08-29T12:05:48.043 に答える