【问题标题】:How to do a case with multiple conditions?多条件案件怎么办?
【发布时间】:2012-11-26 07:14:42
【问题描述】:

在我使用任何编程语言的 1 个月经验中,我假设 switch case 条件将接受括号中的任何内容作为布尔检查 thingamajig,即 这些:

|| && < >

明白我的意思吗?

类似

char someChar = 'w';
switch (someChar) {
case ('W' ||'w'):
    System.out.println ("W or w");
}

可悲的是,这种方式似乎并不奏效。我不能在开关盒中进行布尔检查。

有办法解决吗?

顺便说一句,如果我听起来令人困惑,非常抱歉。我还不太清楚这种语言中所有内容的名称:X
任何答案表示赞赏

【问题讨论】:

  • “boolean checks thingamajig these”被称为“操作符”,而“tis Java”通过您添加的java 标签明确。此外,您发布的整个代码 sn-p 无效(Java 没有case),并且{} 放错了位置)。最好发布您遇到问题的真实代码;大多数时候,编造虚构代码的行为要么隐藏了问题,要么添加了原始代码中没有的其他问题。也许谷歌搜索会有所帮助 - 我试过 case statement Java 并且 first result 很有帮助。
  • 如果答案是正确的,选择它作为接受
  • 运营商。知道了。而且我真的不知道是否有人甚至看过标签,因此是“tiz java”。那个 sn-p 足以说明我想问的不是吗?感谢您的修复顺便说一句:)
  • 仅供参考:。首先,当您发布针对某人的评论时,请使用@username 解决它,以便他们看到它。您会收到通知(这是您的问题),但我们没有。其次,标签在这里非常重要。他们将问题分类,以便寻找信息以及搜索帮助/答案的人轻松找到它们。至于sn-p,请再看一遍我写的东西——它这次对你有帮助的事实并不意味着将来会,我给你的建议可能非常有用在某一点。 :-) 这同样适用于 Google 搜索。
  • @KenWhite 首先,感谢您教我更多有关该网站的信息。其次,我浏览了很多网站,包括 java 网站。请记住,我还没有那么有经验,也无法确定它对我的帮助。我敢肯定,它可能在某个地方。我讨厌打扰别人的宝贵时间,以便他们可以帮助我,但我没有找到一个很好且足够简单的答案来满足我的问题。我以前问过一个问题,我尽可能地保持细致。我只是碰巧这次很着急,所以很抱歉:P

标签: java boolean switch-statement case


【解决方案1】:

对于 switch 语句的替代(多个 if 条件),我认为最好的解决方案是使用枚举。例如:考虑以下情况:-

    public enum EnumExample {

  OPTION1{

    public double execute() {
      Log.info(CLASS_NAME, "execute", "The is the first option.");
      return void;
    }

  },
  OPTION2{

    public double execute() {
      Log.info(CLASS_NAME, "execute", "The is the second option.");
      return void;
    }

  },
  OPTION3{

    public double execute() {
      Log.info(CLASS_NAME, "execute", "The is the third option.");
      return void;

  };

  public static final String CLASS_NAME = Indicator.class.getName();

  public abstract void execute();

}

上面的枚举可以按以下方式使用:

EnumExample.OPTION1.execute();

希望这对你们有帮助。

【讨论】:

    【解决方案2】:

    对于这样的情况,您可以实现 OR:

    switch (someChsr) {
    case 'w':
    case 'W':
        // some code for 'w' or 'W'
        break;
    case 'x': // etc
    }
    

    案例就像一个“goto”,多个 goto 可以共享同一行来开始执行。

    【讨论】:

    • 哇。快速回复。奇迹般有效。谢谢!
    • 我在这里见过的最聪明的 hack。必须+1。另一个人在这里问another question,有人说这是不可能的。我已经引用了你的答案。
    【解决方案3】:

    切换案例是对给定表达式的替代评估的分支。表达式在 switch 括号中给出,可以是 byte、short、char 和 int 数据类型。

    switch 语句的主体称为 switch 块。一份声明 在 switch 块中可以标记一个或多个 case 或 default 标签。 switch 语句计算其表达式,然后执行 匹配 case 标签之后的所有语句。

    http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

    【讨论】:

    • 并没有真正回答这个问题(对我来说),但我现在知道我可以在 switch case 中使用变量类型多远 :) 谢谢
    • 没有问题,还请注意,switch case 有一些可能成为潜在陷阱的错综复杂的地方——比如最后的default 案例,然后通过一个案例进入另一个案例如果不使用 breakreturn。某些语言(例如 Python)完全排除了它们。 stackoverflow.com/questions/374239/…
    【解决方案4】:

    你可以做-

    switch(c) {
        case 'W':
        case 'w': //your code which will satisfy both cases
                  break;
    
        // ....
    }
    

    【讨论】:

      【解决方案5】:

      每个 case 后面通常都有一个“break;”指示执行应在何处终止的语句。如果省略“break;”,则继续执行。您可以使用它来支持应以相同方式处理的多种情况:

      char someChar = 'w';
      {
      case 'W':
        // no break here
      case 'w': 
        System.out.println ("W or w");
        break;
      }
      

      【讨论】:

      • 是的,当它继续进入下一个案例时,我注意到了中断的事情。聪明的方法来照顾它。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2012-12-23
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      相关资源
      最近更新 更多