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
作为
NoProblem
LikeNothing
唷
我认为它会在每个人之后打印默认值,如Breezephew中的第一个
答案 0 :(得分:1)
从1
开始,它以3s(x+=3
)的速度上升。
所以你得到case 1
然后case 4
,7
,10
,13
,16
但是你不总是break
,所以在某些情况下它会落到下一个case
。
这就是case 1
实际给出&#34; BreezeEasyAs&#34;的原因,它在抓住case 1,2,3 & 4
之前运行break
。
答案 1 :(得分:0)
首次x = 1
打印Breeze
时,但由于声明没有中断,因此会继续打印Easy
&amp; ; As
所以它到达终点System.out.println();您将在控制台中获得BreezeEasyAs
,然后以类似的方式运行(每次增加+3)
所以下一次:
x = 4
打印As
找到休息时间再次增加3
什么时候
x = 7
打印No
找不到break
并打印Problem
(因此控制台输出显示为NoProblem
)希望您可以找出其余的
答案 2 :(得分:0)
以下是关于您可能会受益的开关盒结构的一些观点;
switch-case是一种特殊结构,在某些情况下会替换if-else。
在主要编程语言(java,c ++)中只有原语, 调查员可以切换。
case只代表一个锚(或所谓的标签),因此只使用原语,因为在编译时必须知道跳转标签。
由于案例关键字实际上代表一个跳跃点,不会导致 像if-else语句一样分支。
Switch执行跳跃部分(就像某些旧版本中使用的 goto 一样) 编程语言)
通过跳跃执行点,你必须放置 break 您认为自己已完成案例
如果你不执行中断执行将继续。
默认关键字代表所有未处理的案例,通常用于检测未处理的案件
在您的情况下,请考虑您将x递增3并且没有默认。我们考虑x = 7;在这种情况下,执行将跳转到案例7:并继续执行,直到达到休息时间,然后执行所有操作,直到案例9 ,因为有下一个休息时间。