2014-09-19 9 views
5

Ich kann nicht scheinen, ein direktes ja oder nein zu diesem in meinem Suchen zu finden. Gibt es in Android eine Möglichkeit, eine bedingte Anweisung im Fallwechsel zu verwenden? Zum Beispiel mit dem Alter ein int Wert ist:Können Sie bedingte Anweisungen in switch-case in Android verwenden?

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

ich mehrere Möglichkeiten habe versucht, dies zu kodieren (vollständig Aufnahmen im Dunkeln) und kommen mit Compiler-Fehler, und ich habe auch versucht, eine verschachtelte IF-Anweisung , aber es unterstützt keine Unterbrechung, so dass die Logik zusammenbricht und am Ende auch ELSE Code niedriger in der Verschachtelung ausgeführt wird. Ich bin der Meinung, dass Switch-Case meine beste Wahl ist, aber ich finde kein Beispiel für die korrekte Syntax für das, was ich versuche zu tun! Jede Hilfe wäre willkommen. Alle Beispiele, die ich finde, verwenden switch-case nur für ein paar Dinge, wie wenn es eine 1 ist, wenn es eine 2 ist, aber ohne 100 Fälle zu machen, um das Alter zu überprüfen, bin ich mir nicht sicher, wie ich sonst arbeiten soll Dies.

+0

Laufen Sie dies durch eine Schleife? Versuche, mehr von deinem Code zu posten. – shinjw

+0

Sie können sich http://stackoverflow.com/questions/389741/continue-keyword-in-java ansehen. Dies ist kein guter Ort, um Switch zu verwenden. – shinjw

Antwort

5

Nein, Sie dies nicht tun können,

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

Sie benötigen ein if und else,

if (age > 79) { 
// do this stuff. 
} else if (age > 50) { 
// do this other stuff. 
} // ... 
+0

Das einzige Problem ist dann lassen Sie uns sagen, das Alter ist 51, es wird das Alter 50 wenn, aber auch das Alter 45 wenn, Alter 35 wenn, usw. Ich versuchte mit "Pause"; aber das funktioniert anscheinend nicht mit einem verschachtelten if. Also wie bekommst du es, nur den einen ohne all die niedrigeren zu tun? – Robert

+0

Genau wie ich in meiner Antwort gesagt habe, wird es nicht in den "else" -Block eintreten, wenn der "if" -Block eingegeben wird. Dies ist kein 'Schalter'. –

+0

Wenn ich Sie also richtig verstehe, wertet es, sobald eine if-Bedingung erfüllt ist, nicht mehr alle anderen verschachtelten ifs in diesem Block verschachtelter ifs aus? Es ist also wie die Pause impliziert ist? – Robert

1

Sie können dies nicht verwenden, wenn dann Anweisung.

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

etc ...

0

Wenn Sie eine Schleife verwenden Sie Vielleicht möchten Sie What is the "continue" keyword and how does it work in Java? betrachten. Dies ist kein guter Ort, um Switch zu verwenden.

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 
} 
-1

Sie können keine bedingten Anweisungen mit switch verwenden.

Aber Sie können es mit if Aussagen tun! Wenn Sie eine Schleife haben, können Sie continue verwenden, um alle anstehenden Zeilen zu stoppen und am Anfang der innersten Schleife zu beginnen.

if(age>76){ 
    // Code... 
    continue; 
}else if(age>50){ 
    // More Code... 
    continue; 
}else{ 
    // Even more code... 
    continue; 
} 
+0

Die Breaks int switch, dass der Benutzer, der diese Frage eingab, das Fortfahren nicht benötigt. – startoftext

5

Versuchen Sie, diesen schönen und minimalistischen Ansatz

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(); 
+0

Dies bezieht sich nicht direkt auf die Frage, auch wenn sie als gültige Antwort angesehen werden kann. Bitte geben Sie einige weitere Details an, da es sich bei der Frage um eine switch-Anweisung handelt und Ihre Antwort eine if-then-else-Lösung bietet. – hotzst

+0

@hotzst Wie bereits von den anderen erwähnt, gibt es keine Möglichkeit, bedingte Anweisungen in der Java-Switch-Schleife zu verwenden. stattdessen könnte diese Art der Behandlung vielleicht weniger wortreich sein. – Williem

-3

es getan werden kann. Der Code muss leicht geändert werden.

public static void main(String[]arguments) 
    { 
     int x=1, age=55; 
     switch(x) 
     { 
     case 1: if((age>=60)&&(age<200)) 
      System.out.println("Senior Citizen"); 
     case 2: if((age>=18)&&(age<60)) 
      System.out.println("Adult"); 
     case 3: if((age>=12)&&(age<18)) 
      System.out.println("Teenager"); 
      break; 
     default : 
      System.out.println("Child"); 
      break; 
     } 
} 
+0

Das wird nicht funktionieren. Seit 'x = 1' enden Sie immer bei 'Fall 1'. – cpburnz

+0

Das ist nicht richtig. Ich habe nach jedem Fall keine Pause gebraucht. So überprüft es jeden Fall und nicht nur Fall 1. – Vikram

+1

Ich habe das vermisst. Aber was ist der Zweck der switch-statement? Es ist effektiv nur eine Kette wenn-Aussagen dann. – cpburnz

Verwandte Themen