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ステートメントで「以上」を使用することについて、初心者に何を伝えることができますか?
これがあなたが求めていることかどうかはわかりませんが、次のようにすることができます:
int var1;
int var2;
int signum = Long.signum((long)var1 - var2);
switch(signum) {
case -1: break;
case 0: break;
case 1: break;
}
if(var1>var2){}else if (var1==var2) {} else {}
構文を強くお勧めします。ここでスイッチを使用すると、意図が非表示になります。そして、break
がエラーによって削除された場合はどうなりますか?
スイッチは、比較ではなく、列挙値に対して有用かつ明確です。
最初の提案:switch
は状態のチェックではなく切り替えにのみ使用する必要があることを示しています。
SwitchStatement:
switch ( Expression ) SwitchBlock
式では、intまたはEnumに変換可能な式がサポートされています。
これらのラベルは、caseステートメントの定数式(§15.28)または列挙型定数(§8.9.1)の値と同様に、switchステートメントに関連付けられているといいます。
Java 7の文字列値もサポートされます。論理式はサポートされていません。1.6以下のswitchステートメントでは、定数式とEnum定数のみが許可されます。
あるいは、@ Stewartの回答にあるように行うこともできます。
Javaはcase
ステートメントの範囲ではなく直接値のみをサポートするため、スイッチを使用する必要がある場合は、最初にオプションにマッピングしてから、スイッチをオンにします。ただし、これはかなり過剰です。ifステートメントを使用してください。
Switchステートメントは、特定の値が返されたときにコードを実行するためのもので、if if elseを使用すると、1つのステートメントで値の範囲を選択できます。複数の範囲を調べたい場合は、次のようなことをお勧めします(個人的にはInteger.signumメソッドを好みます)。
int i;
if (var1 > var2) {
i = 1;
}
else if (var1 == var2) {
i = 0;
}
else {
i = -1;
}
if
ステートメントのほうがよいでしょう。 switch
アプローチははるかに不明確であり、この場合、switch
アプローチは客観的に間違っています。 Comparable#compareTo
の契約では、-1
または1
を返す必要はありません。返されるint
の値が負または正であることだけが必要です。 compareTo
が-42
を返すことは完全に合法であり、switch
ステートメントは結果を破棄します。
one変数の値を使用する場合は、スイッチを使用します。 multiple変数が機能している場合は、ifを使用します。あなたの述べた問題では、それはifであるはずです。
残念ながら、Javaでそれを行うことはできません。 CoffeeScript
または他の言語で可能です。
追加のメソッドで「実行」を移動して、if
-else
-ステートメントを使用することをお勧めします。このようにして、if-elseを明確に読み取り可能なコードに含めることができます。