java开关中的多个args

时间:2015-04-12 23:14:10

标签: 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;
   }

1 个答案:

答案 0 :(得分:4)

您的语法错误。你需要利用堕落:

     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&#34;结束&#34;一个案例。

即使没有break

,您也可以在案例之间插入代码
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;
}