2016-07-02 8 views
-1

ich einen Code-Schnipsel haben wie folgt:Java-Schalter passt mehrere Fälle

switch (status.getStatusCode()) { 
    case LocationSettingsStatusCodes.SUCCESS: 
      Log.d("Location", "onResult: success"); 
    case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
      Log.d(TAG, "onResult: resolution needed"); 

} 

status.getStatusCode() Rückkehr ein int und alle Konstanten sind auch int s.
Vor Schalterblock I log 3 Werte status.getStatusCode() 0, LocationSettingsStatusCodes.SUCCESS 0 und LocationSettingsStatusCodes.RESOLUTION_REQUIRED ist 6.
Aber beide Log.d Anweisungen ausgeführt werden. Ich glaube nicht, dass das Problem mit meinem Code zusammenhängt, weil ich dieselbe Logik mit if-else ausgeführt habe.
Was kann das Problem sein?

+0

Sie verpassen 'break' Aussagen. – manouti

+0

Sie müssen eine Anweisung 'break;' am Ende jedes Fallblocks hinzufügen –

+0

Wenn ich '' break'' Anweisungen nicht hinzufüge, wird der nächste Fall ausgeführt, ohne die Bedingung zu bewerten? – Mehrdad

Antwort

0

Sie benötigen eine break-Anweisung.

, dass ohne den Fall allerdings in den nächsten Fall fallen ....

switch (status.getStatusCode()) { 
    case LocationSettingsStatusCodes.SUCCESS: 
      Log.d("Location", "onResult: success"); 
      break; 
    case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
      Log.d(TAG, "onResult: resolution needed"); 
      break; 
}