java switch 中的多个参数

问题描述 投票:0回答:1

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

     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;
   }
java char switch-statement arguments
1个回答
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
“结束”一个案件。

即使没有

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.