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