2016-07-02 76 views
-1

我有一個代碼片段如下:Java的開關匹配多個案件

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

} 

status.getStatusCode()返回一個int和所有的常量是int類型爲好。
開關塊之前我登錄3個值status.getStatusCode()是0,LocationSettingsStatusCodes.SUCCESS是0和LocationSettingsStatusCodes.RESOLUTION_REQUIRED是6
但兩者Log.d語句被執行。我不認爲這個問題與我的代碼有關,因爲我用if-else執行了相同的邏輯。
可能是什麼問題?

+0

你錯過了'break'語句。 – manouti

+0

你需要在每個case塊的最後添加一個'break;'語句 –

+0

如果我沒有添加break語句,那麼下一個例子是否會在沒有評估條件的情況下執行? – Mehrdad

回答

0

你需要一個break語句。

沒有這個情況會雖然落入了下情況....

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