黑马程序员技术交流社区
标题: 大家帮忙看看这个程序 [打印本页]
作者: 赵崇友 时间: 2013-3-30 17:06
标题: 大家帮忙看看这个程序
本帖最后由 赵崇友 于 2013-3-30 17:22 编辑
class Demo
{
public static void main(String[] args)
{
show(0);
show(1);
}
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);
}
}
运行结果是:
15
14
求具体的执行流程。
作者: 黑马伍哲沂 时间: 2013-3-30 17:19
首先产生这个结果的原因是 各个case项后都没有家break;
当你传入0时,没有对应case项,所以从default开始 一直往下执行;
default:
i+=2; // i = 2;
case 1:
i+=1; // i = 3 ;
case 4:
i+=8; // i = 11;
case 2:
i+=4; // i =15;
然后到打印语句 ,输出i的值为15;
传入1时,从case 1:开始依次向下执行,即最后结果14;
作者: 赵崇友 时间: 2013-3-30 17:21
黑马伍哲沂 发表于 2013-3-30 17:19
首先产生这个结果的原因是 各个case项后都没有家break;
当你传入0时,没有对应case项,所以从default开 ...
哦哦,原来如此 ,多些了!!没有符合的case就从default执行啊。。
作者: _王涛 时间: 2013-3-30 17:21
show(0);因为i=0,所以从default开始计算,
default:
i+=2; -----------------i=0+2=2
case 1:
i+=1;-------------------i=3;
case 4:
i+=8; ------------------i=11;
case 2:
i+=4;------------------i=15;
加到最后结果:i=15;
show(1); 因为i=1,所以从case开始运行.
case 1:
i+=1; ----------------i=2;
case 4:
i+=8; -----------------i=10;
case 2:
i+=4;------------------i=14;
第二个结果是:i=14;
作者: 续圆凯 时间: 2013-3-30 17:24
本帖最后由 续圆凯 于 2013-3-30 17:27 编辑
在show(0)中 当执行到i=0的时候,下面的case没有对应的值,所以会从上往下执行。
即: i+=2;
i+=1;
i+=8;
i+=4;
最后输出i的值。15
在show(1)中 当执行到i=1的时候, 找到了下面的case 1. 所以会跳过default 往下执行。
即: i+=1;
i+=8;
i+=4;
最后输出i的值。 14
作者: 邵震 时间: 2013-3-30 17:28
- class java0330d2
- {
- public static void main(String[] args)//主函数
- {
- show(0);
- show(1);
- }
- public static void show(int i)//没有返回值的函数名为show,有一个int类型的变量i参与运算。
- {
- switch(i)//这一段是选择语句
- {
- default://下列结果都不对就运行这一语句
- i+=2;
- case 1://结果1
- i+=1;
- case 4://结果2
- i+=8;
- case 2://结果3
- i+=4;
- }
- System.out.println("i="+i);//输出语句。
- }
- }
- //这段代码没写跳出语句break, 所以他把所有的结果加了一遍 结果一个是15 一个是14
复制代码 你看看是这意思不
作者: 万蕾 时间: 2013-3-30 17:28
在主函数中将0放入静态方法show中,而show中方法是switch语句,其会先判断case上的取值是否与0匹配,如果不匹配则从default开始执行,又因为执行语句后没有用break结束循环,则show(0)会先执行defaut中的执行语句并依次执行每个case中的语句。而show(1)则会从case 1中的执行语句开始,一次往下执行剩余case的执行语句。
作者: guobin_lu 时间: 2013-3-30 18:56
正解么{:soso_e179:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |