我希望我的输入是三组字符之一,并且需要根据它所属的组来决定如何处理它。我正在尝试找出如何定义具有多种情况的开关来执行此操作。这是我到目前为止所拥有的:
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'
情况到达实际的语句代码,因为这些标签没有执行任何操作。 只有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;
}