切换语句

时间:2011-05-24 04:38:31

标签: case switch-statement break

对于switch语句,是否可以在switch语句中更改switch的值,以便它可以跳转到不同的情况? 例如:

int w = 0;
switch(w)
{
   case 1:
     doSomething();
     w = 3;
   case 2:
     doSomething();
     break;
   case 3:
     doSomething();
     break;
}

基本上我要问的是,如果我没有为一个案例放置一个break语句并且我在同一个案例中更改了switch的值,代码是否会执行这两种情况?

4 个答案:

答案 0 :(得分:3)

是的,您可以更改开关内的值,但在您更改值的情况下,它将不会执行新值的大小写。

在你的情况下,它不会出现任何情况,因为没有0的情况。但如果你改为w = 1那么它将用于案例1然后用于案例2,因为你没有休息;但它不适用于案例3.

答案 1 :(得分:2)

不,它不会改变,也不会执行新的案例陈述。

请记住,一旦找到 相应的 匹配与case语句对应的switch语句内的值,就会执行该特定情况并执行一次(如果在每种情况之后提供break以防止掉落所有情况),然后控制返回到switch语句的结尾。

示例代码:

public  class A {
            public static void main(String [] args) {
                    int i=1;
                    switch(i) {
                            case 1 : 
                                    System.out.println("Case 1");
                                    i = 2;
                                    break;
                            case 2 : 
                                    System.out.println("Changed to Case 2");
                                    break;

                             default:
                                    System.out.println("Default");
                                    break;
                            }

                    System.out.println("Final value of i " + i);
            }
    }

输出

Case 1
Final value of i 2  

注意:插入正确的断点,尝试调试。你会了解自己,到底发生了什么。

答案 2 :(得分:1)

如果我们在每个案例之后都没有给出中断,那么Java将从匹配案例开始执行语句并继续执行以下情况的语句,直到找到break语句或遇到switch语句结束。

答案 3 :(得分:0)

如果case 1恰好执行,那只是通过落到case 2。由于break中有case 2,因此不会发生进一步的堕落。由于case 3中的语句w = 3 ;,它不会跳转到case 1