java 开关中的多个参数

Multiple args in a java switch

我希望我的输入是三组字符中的一组,并且需要根据它属于哪一组来决定如何处理它。我正在尝试弄清楚如何定义具有多种情况的开关去做这个。这是我目前所拥有的:

     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;
   }

你的语法有误。您需要利用 fall-through:

     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' 情况以到达实际的语句代码,因为这些标签没有做任何事情。仅break"ends"个案例。

即使没有 break:

,您实际上也可以在 case 之间插入代码
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;
}