【问题标题】:Java switch matches multiple cases [duplicate]Java开关匹配多种情况[重复]
【发布时间】:2016-07-02 15:08:12
【问题描述】:

我有一个代码sn-p如下:

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 s。
在切换块之前,我记录了 3 个值 status.getStatusCode() 为 0,LocationSettingsStatusCodes.SUCCESS 为 0,LocationSettingsStatusCodes.RESOLUTION_REQUIRED 为 6。
但是两个Log.d 语句都被执行了。我认为问题与我的代码无关,因为我使用 if-else 执行了相同的逻辑。
可能是什么问题?

【问题讨论】:

  • 您缺少break 语句。
  • 你需要在每个case块的末尾添加break;语句
  • 如果我不添加break语句,是否会在不评估条件的情况下执行下一个案例?
  • 没错,就是所谓的“fallthrough”

标签: java switch-statement


【解决方案1】:

你需要一个 break 语句。

如果不这样,案件将落入下一个案件中......

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-09
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多