2016-04-12 12 views
-1

wie kann ich wandeln diese statment wenn statment zu wechseln, indem man bedenkt, dass ich zwei Variablen hier verwende, und ich versuchte, es zu lösen, aber nichtWie konvertiert man Statement um Statement zu wechseln?

int child; 
char gender; 
int temp; 
child=console.nextInt(); 
gender=console.next().charat(0); 
if(gender=='m' && children>=4) 
    temp =1; 
else if(gender=='m' && children<4) 
    temp =2; 
else if(gender=='f' && children<4) 
    temp =3; 
else 
    temp=4; 
} 

Arbeits dies ist mein Code

int children; 
    double temp; 
    char gender; 
    children=console.nextInt(); 
    switch(children , gender) 
    { 
     case < 4, 'm': 

     temp=1; 
     break; 

     default : salary=600; 
    } 
+2

'" Ich habe versucht, es zu lösen, aber nicht funktioniert "' - wo ist dein Versuch? Schreiben Sie dies immer mit Ihrer Frage und teilen Sie uns eventuelle Fehler und Fehlverhalten mit. –

+0

'switch' unterstützt keine Bereiche'> = 4', so dass Sie irgendwo eine 'if' Anweisung haben – MadProgrammer

+0

Hilft Ihnen das? http://stackoverflow.com/questions/9235152/cani-i-use-a-case-switch-statement-with-two-variables –

Antwort

2

Sie sollten st Kunst durch einen Blick auf The switch Statement

Die switch-Anweisung bewertet grundsätzlich eine einzelne Bedingung pro Fall. Sie können Drop-Through-Bedingungen verwenden, aber das ist viel zusätzlicher Code.

Zum Beispiel so etwas wie ...

switch (gender) { 
    case 'm': 
     temp = 0; 
     if (children >= 4) { 
      temp += 1; 
     } else { 
      temp += 2; 
     } 
     break; 
    case 'f': 
     temp = 2; 
     if (children >= 4) { 
      temp += 2; 
     } else { 
      temp += 1; 
     } 
     break; 
} 

würde die gleichen Ergebnisse wie Ihre if Aussagen erzeugen

Wenn Sie reine switch Aussagen, zu verwenden, könnte man so etwas tun ...

switch (gender) { 
    case 'm': 
     temp = 0; 
     switch (children) { 
      case 0: 
      case 1: 
      case 2: 
      case 3: 
       temp += 2; 
       break; 
      default: 
       temp += 1; 
     } 
     break; 
    case 'f': 
     temp = 2; 
     switch (children) { 
      case 0: 
      case 1: 
      case 2: 
      case 3: 
       temp += 1; 
       break; 
      default: 
       temp += 2; 
     } 
     break; 
} 

Java switch-Anweisung nicht unterstützt Bereiche :(

+0

Ihre inneren Schalter müssen "Pause" hinzugefügt werden. –

+1

@PaulBoddington Das ist lustig, ich bin mir sicher, dass getestet richtig, frage mich, was ich sah: P – MadProgrammer

1

Schalter (Geschlecht) {

case 'm': 
    temp = (children >= 4)? 1:2; 
    break; 
case 'f': 
    temp = (children >= 4)? 4:3; 
    break; 
default: 
    temp = 4; 
    break; 

}