java - java switch 中的多个参数

标签 java char switch-statement arguments

我希望我的输入是三组字符之一,并且需要根据它所属的组来决定如何处理它。我正在尝试找出如何定义具有多种情况的开关这。这是我到目前为止所拥有的:

     while(in.hasNextChar())
      {
         char test = in.nextChar();
         List<Signal> out = new List<Signal>(0);
         switch(test)
         {
            case '1','0','x','X':
               out.add(fromString(test));
               break;
            case ' ','/t':
               break;
            default:
               throw new ExceptionLogicMalformedSignal;
         }
      }
      return out;
   }

最佳答案

您的语法错误。您需要利用失败的优势:

     switch(test) {
        case '1':
        case '0':
        case 'x':
        case 'X':
           out.add(fromString(test));
           break;
        case ' ':
        case '\t':
           break;
        default:
           throw new ExceptionLogicMalformedSignal;
     }

案例只是一个标签,与 goto 中使用的标签非常相似(这本质上是幕后发生的事情)。它不是一个声明,因为它本身不执行任何操作 - 它只是命名一个地址。因此,如果 test'0',它可以愉快地继续执行 'x''X' 情况到达实际的语句代码,因为这些标签没有执行任何操作。只有打破才能“结束”案件。

即使没有中断,您实际上也可以在案例之间插入代码:

switch(test) {
    case '1':
        System.out.println("This is printed by case '1'");
    case '0':
        System.out.println("This is printed by both case '1' and case '0'");
        break;
    case 'x':
    case 'X':
        System.out.println("This is only printed by the Xs");
        break;
    default:
        break;
}

关于java - java switch 中的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29595758/

相关文章:

java - 我们可以同时从多个线程访问同一个实例的同步方法和非同步方法吗?

c - 海湾合作委员会 4.4 : Avoid range check on switch/case statement in gcc?

c switch 语句

c - 为什么这个无效的输入仍然有效? (切换大小写)字符错误

java - 一个简单的java多线程

java - 如何将整数的四个字节中的每一个单独提取为 8 位值并显示

java - 将数据发送到父 Activity

java - 为什么 StringReader.Read() 不返回字节?

Java - 为什么 char '+' 不会出现在控制台上?

c - 检查 strInput 以通知用户输入对于程序来说太大时出错?