黑马程序员技术交流社区
标题:
为什么是 9
[打印本页]
作者:
刘永贵
时间:
2014-3-17 12:06
标题:
为什么是 9
public class aa {
public static void main(String[] args) {
int num = 4;
int y = 0;
switch(num) {
case 1:
y++;
case 2:
y+=2;
case 3:
y+=3;
case 4:
y+=4;
case 5:
y+=5;
}
System.out.println(y);
}
}
运行结果是什么 为什么
作者:
chen20134
时间:
2014-3-17 12:15
public class Test05 {
public static void main(String[] args) {
int num = 4;
int y = 0;
switch(num) {
case 1:
y++;break;
case 2:
y+=2;break;
case 3:
y+=3;break;
case 4:
y+=4;break;
case 5:
y+=5;break;
}
System.out.println(y);
}
}
复制代码
你的代码中少了break语句,当num=4时,执行的语句是
y+=4;
y+=5;
所以y=9。
作者:
歌尽繁华
时间:
2014-3-17 12:21
case语句后面没break,程序会一直执行到swich最后
作者:
蓝枫
时间:
2014-3-17 12:29
如果匹配的case或者default没有对应的break, 那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。你的代码中没有break,会一直执行到switch的大括号结束。所以结果是9
作者:
汗血黑马
时间:
2014-3-17 12:38
switch语句是选择语句,只能接受int. byte. short. char 数据类型;break关键字的作用是,结束语句,返回当前值,你应该养成case 和break配套使用的习惯,如果不用break,程序会继续向下执行,y = 4, y+=5,结果就是9了;如果加上break,程序就不会再往下走,返回所匹配的值。
作者:
董振冬
时间:
2014-3-17 12:57
介个很好解释的,首先num=4, switch语句跳到case4 (介个不需要解释吧,switch语句),y+=4;
作者:
董振冬
时间:
2014-3-17 12:59
然后,y=0 ,即 0+=4, y= 4 接着往下执行,跳到case5 y+=5;即y = (4+ =5)
作者:
王竞
时间:
2014-3-17 13:57
你的case语句后面并没有写上break,所以导致在执行的时候,会依顺序往下执行,直到结束,或者在下面遇到beak;并没有在执行完成一个case条件以后就退出,这种写法也有一定的用途,比如
public class Test{
public static void main(String[] args) {
int num = 1;
switch(num) {
case 1:
case 2:
case 3:
System.out.println("A");//当num 等一 1 或 2 或 3 时,都是打印出A
beak;
case 4:
System.out.println("B");
beak;
case 5:
System.out.println("C");
beak;
default:
System.out.println("D");
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2