黑马程序员技术交流社区
标题:
switch语句的问题
[打印本页]
作者:
于世德
时间:
2013-7-15 16:24
标题:
switch语句的问题
class Demo
{
public static void main(String[] args)
{
show(0);//15
show(1);//14
}
public static void show(int i)
{
switch(i)
{
default:
i+=2;
case 1:
i+=1;
case 4:
i+=8;
case 2:
i+=4;
}
System.out.println("i="+i);
}
}
复制代码
谁来帮忙分析一下2个show方法的输出结果?
作者:
wedge
时间:
2013-7-15 17:16
show(0); 直接匹配了default: 而没有break,并且而其后的所有case:都没有break,所以会一直顺序执行。而show(1)则case 1: 并且没有break ,也是会顺序执行其后的所有case:语句。
作者:
wedge
时间:
2013-7-15 17:17
show(0); 直接匹配了default: 而没有break,并且而其后的所有case:都没有break,所以会一真顺序执行。而show(1)则case 1: 并且没有break ,也是会顺序执行其后的所有case:语句。
作者:
wedge
时间:
2013-7-15 17:18
所以show(0)=0+2+1+8+4=15;而show(1)=1+1+8+4=14;
作者:
胡志翔
时间:
2013-7-15 17:24
当 i=0时,选择值里面没有0,程序从default执行,因为没有语句break语句来跳出switch语句,所以要顺序执行完switch里的所有语句,即i=0+2+1+8+4=15
当 i=1时,选择值里面有1,程序从case 1执行,因为没有语句break语句来跳出switch语句,所以要顺序执行完switch里的所有语句,即i=1+1+8+4=14
作者:
李健09
时间:
2013-7-15 22:10
没有break,
i=0时,执行i+=2;i+=1;i+=8; i+=4;
输出的是15
i=1时,执行i+=1;i+=8; i+=4;
输出的是14
作者:
肥猫
时间:
2013-7-15 22:21
本帖最后由 肥猫 于 2013-7-15 22:29 编辑
show(0)你先别管DEFAULT的位置,无视他,DEFAULT总是在最后没有匹配值才执行或者找到匹配直接BREAK不执行,所以SHOW(0)就从CASE1加下来1+8+4+2=15;
shou(1)从一开始匹配,没有BREAK就这么加1+1+8+4=14;
作者:
hou604720966
时间:
2013-7-16 17:41
你写的程序中switch----case语句中没有break所以i的值是直接累加的
作者:
教皇
时间:
2013-7-16 20:02
没有break语句,所以会顺序执行下去,show(0)执行执i+=2;i+=1;i+=8; i+=4;得出i=15
当show(1)时,从case1开始执行,没有break,则执行i=1时,执行i+=1;i+=8; i+=4;得出i=14
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2