为什么这个,
public class Bar
{
public static void main(String[] args)
{
int i = 1;
switch(i)
{
case 0:
case 1:
case 2:
System.out.println("Case 2 being executed");
break;
default:
break;
}
}
}输出这个,
案件2正在执行
当输入值显式为2时,如何才能输入1输入值的case块?注意,我知道我可以通过在case块中为1添加一个break语句来避免这种行为。
发布于 2013-01-28 16:34:20
当输入值显式为1时,如何才能输入输入值为2的case块?
这种行为称为“失败”,这是初学者在使用switch-case时经常犯的错误。实际上,case 1:确实首先执行。但是,由于在第1种情况中没有break语句,所以switch-case继续执行下一种情况,直到找到break语句为止。因此,它甚至将执行case 2:的代码,从而执行输出。然后它在执行case 2之后中断,因为它遇到了一个中断。
因此,将swich-case更改为:-
switch(i)
{
case 0: break;
case 1: break;
case 2:
System.out.println("Case 2 being executed");
break;
default:
break;
}看到你想要的行为。
发布于 2013-01-28 16:34:55
因为你没有在案例1后面加上一个中断,所以它使用了案例2的逻辑。在每一种情况下,您都需要一个break语句,否则编译器就会转到下一行。
发布于 2013-01-28 16:41:32
开关语句将运行所有case块,直到它到达开关语句的第一个中断或结束为止。
因此,在您的示例中,它执行所有块,直到到达第二个块中的中断为止。
如果"0“和"1”块中有任何语句,也将执行这些语句。
这种行为也是非常有用的。
https://stackoverflow.com/questions/14566620
复制相似问题