【问题标题】:Break out of switch statement execute one case跳出switch语句执行一个case
【发布时间】:2016-01-21 00:04:20
【问题描述】:

所以基本上,我试图让 switch 语句只执行一次。并且不执行所有这些。 假设玩家在他们的库存中拥有所有的钥匙。 我只想执行一个案例,而不是遍历所有案例。 (我只想看到一个执行)

public int[] allKeys = {1543, 1544, 1545, 1546, 1547, 1548};

if (player.getInventory().containsAny(allKeys)) {
                      for (int id : allKeys) {
                          switch(id) {
                          case 1543:
                              System.out.println("executed");
                              break;
                          case 1544:
                              System.out.println("executed");
                              break;
                          case 1545:
                              System.out.println("executed");
                              break;
                          case 1546:
                              System.out.println("executed");
                              break;
                          case 1547:
                              System.out.println("executed");
                              break;
                          case 1548:
                              System.out.println("executed");
                              break;
                            default:
                              System.out.println("error!");
                          }
                        }
                    }

【问题讨论】:

  • 去掉for循环就行了

标签: switch-statement break execution


【解决方案1】:

您的switch 确实只“一次一个” - 实际上您的开关处于 for 循环中,这导致您出现问题...

您可以在开关 switch(x) { ... } break; 之后放置一个“中断”,但当您不想这样做时,为什么要循环 - 只需打开第一个键即可。

【讨论】:

  • 但是我丢失了 id 变量。
  • int id = keys.first() 之类的东西会给你一个 id 变量。老实说,你在做什么似乎很奇怪。您是否只是想检查玩家是否拥有一组预定义的密钥?只处理一组中的一个似乎是错误的(不知道你要做什么......)
  • 根据玩家拥有的按键,动作会有所不同。他们可以拥有所有的钥匙,但我只希望它一次使用一把钥匙。
  • 听起来更像你想要的if player.keys.contains(Most_Important_Key) { } else if player.keys.contains(Second_Most_Important_Key) {} 或类似的东西。是否需要(或缺少)循环遍历所有键仍然不清楚。
  • 谢谢!!约翰那是我想要的东西!
【解决方案2】:

您当前正在 for 循环中运行 switch case,该循环遍历数组 allKeys 中的每个 id。因为您假设用户拥有 allKeys,所以我只需删除 for 循环,然后选择您希望用户执行的任何键,然后让该键通过 switch 语句。

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 2014-03-27
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多