0
public class g{
    public static void main(String [] args){
    for(int x = 1; x <17; x +=3){
        switch(x){
            case -1: case 0: case 1:
                System.out.print("Breeze");
            case 2: System.out.print("Easy");
            case 3:
            case 4: System.out.print("As"); break;
            case 5: System.out.print("Pie"); break;
            case 6: case 7: System.out.print("No");
            case 8: System.out.print("Problem");
            case 9: break;
            case 10: System.out.print("Like");
            case 12: System.out.print("Nothing"); break;
            case 13:
            case 14: System.out.print("phew"); break;
        }
        System.out.println();
    }
}
}

为什么它会打印出
BreezeEasyAs
As
NoProblem
LikeNothing
phew
我认为它会在每个之后打印默认值,就像在第一个 Breezephew 中一样

4

3 回答 3

1

它开始于1并在 3s ( x+=3) 内上升。

所以你得到case 1case 4, 7, 10, 13,16

但是你并不总是有s 所以在某些情况下break它会落到下一个。case

这就是为什么case 1实际上给出“BreezeEasyAs”,它case 1,2,3 & 4在捕获break.

于 2013-11-15T09:30:31.943 回答
0

以下是有关您可能受益的开关案例结构的一些要点;

  • switch-case 是在某些情况下替代 if-else 的特殊结构。

  • 在主要的编程语言(java、c++)中,只有原语、枚举器可以切换。

  • case 只代表一个锚点(或所谓的标签),因此只使用原语,因为在编译时必须知道跳转标签。

  • 由于 case 键实际上代表一个跳转点,不会像 if-else 语句那样导致分支。

  • Switch 做跳跃部分(就像在一些旧的编程语言中使用的 goto一样)

  • 由于它通过跳转执行点来工作,因此您必须将break 关键字放在您认为已完成案例的点

  • 如果你不放中断执行将继续。

  • default关键字代表所有未处理的case,通常用于检测未处理的case

在您的情况下,请考虑您将 x 增加 3 并且没有default。让我们考虑 x = 7;在这种情况下,执行将跳转到case 7:并继续执行直到它到达一个 break 从而执行所有事情直到case 9,因为有下一个 break。

于 2013-11-15T09:52:04.300 回答
0

第一次
x = 1打印时,Breeze
但由于语句没有中断,它会继续打印
EasyAs所以在它到达结束之前 System.out.println(); 您将进入BreezeEasyAs控制台,然后它以类似的方式运行(每次增加 +3)

所以下一次:
x = 4它打印Asfind the break 并再次增加 3

x = 7 它打印 find Nonobreak并打印Problem(所以控制台输出说NoProblem)希望你能弄清楚其余的

于 2013-11-15T09:33:53.657 回答