web-dev-qa-db-ja.com

Androidのswitch-caseで条件文を使用できますか?

私の検索では、これに対して簡単な「はい」または「いいえ」を見つけることができないようです。 Androidでは、case-switchで条件文を使用する方法はありますか?たとえば、年齢がint値の場合:

switch (age){
case (>79):
 // Do this stuff
 break;
case (>50):
 // Do this other stuff
break;
etc, etc

私はこれをコーディングするいくつかの方法を試し(完全に暗闇で撮影)、コンパイラエラーを考え出しました。また、ネストされたIFステートメントも試しましたが、breakをサポートしていないため、ロジックが壊れてしまいます。また、ネストの下位にあるELSEコードを実行します。 switch-caseが最善の策だと思いますが、私がやろうとしていることの正しい構文の例を見つけることができません!どんな助けでもいただければ幸いです。私が見つけたすべての例では、1の場合はこれを行い、2の場合はそれを行うなど、いくつかの目的でswitch-caseを使用していますが、年齢を確認するために100のcaseステートメントを作成しないと、他にどのように作業するかわかりませんこの。

5
Robert

それは不可能。代わりに、このミニマリストアプローチを試してください

 age > 79 ? first_case_method() 
          : age > 50 ? second_case_method() 
          : age > 40 ? third_case_method() 
          : age > 30 ? fourth_case_method() 
          : age > 20 ? fifth_case_method()
          : ... 
          : default_case_method();
6
Williem

Ifthenステートメントを使用してこの使用を行うことはできません。

if(age > 79)
{
   //do stuff
}
else if(age > 50)
{
   //do stuff
}
else
{
   /do stuff
}

等...

1
brso05

ループを使用している場合は、 「continue」キーワードとは何ですか。Javaではどのように機能しますか? を確認してください。これは、スイッチを使用するのに適した場所ではありません。

if(age > 79)
{
   //do stuff
   continue; // STOP FLOW HERE AND CONTINUE THE LOOP
}
else if(age > 50)
{
   //do stuff
   continue; // STOP FLOW HERE AND CONTINUE THE LOOP
}
0
shinjw

javaSE 7以降、スイッチの各ケースは整数または文字列であると想定されており、ブール値をフィードしようとしているため、不可能です。Oracleドキュメントを読んでJavaスイッチの詳細を確認してください。 http://docs.Oracle.com/javase/tutorial/Java/nutsandbolts/switch.html

0
NavinRaj Pandey