我希望我的输入是三组字符之一,需要根据它所属的组来决定如何处理它。我正在试图找出如何定义一个包含多个案例的开关这个。以下是我到目前为止的情况:
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;
}
答案 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;
}