黑马程序员技术交流社区
标题:
容易出错的一道题
[打印本页]
作者:
王雷
时间:
2012-9-25 23:45
标题:
容易出错的一道题
int i = 0, j = 5;
tp: for (;;)
{
i++;
for(;;)
{
if(i > j--)
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j);
复制代码
作者:
黑马杨晨
时间:
2012-9-25 23:49
这题咋做啊{:soso_e144:}
作者:
王玉岩
时间:
2012-9-25 23:56
int i = 0, j = 5;
tp: for (;;)
//这个for循环应该是表示条件一直成立
{
i++;
for(;;)
{
if(i > j--)
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j);
但是运行的结果好像跟想像中的不一样 求解
作者:
陈郊
时间:
2012-9-26 00:16
首先外层循环是一个死循环,进入循环之后执行i++,i=1,再进入第二层循环,第二层循环也是死循环,进入之后会当i=1,j=0时,满足if的条件,执行break tp即结束最外层循环,此时i=1,j=-1,最后的结果就是:i=1,j=-1
作者:
hello_world!
时间:
2012-9-26 00:41
楼上的正解,结果是:i=1,j=-1
作者:
宫明星
时间:
2012-9-26 03:16
本帖最后由 宫明星 于 2012-9-26 03:22 编辑
int i = 0, j = 5;
tp: for (;;) //这个意思是循环始终是真,无限循环
{
i++;
for(;;) //同上
{
if(i > j--)
break tp;//如果条件满足,跳出循环,注意,是跳出tp循环
}
}
System.out.println("i = " + i + ", j = "+ j);
复制代码
循环执行第一遍时候,
i++
,进入内循环,此时,
i的值是1
。
然后判断
i > j--
。
j这时是5
,不成立,然后执行
j--
,因为内循环始终成立,返回再判断i > j--。
反复循环判断,一直到
j等于0的时候
,i > j成立,跳出循环,此时判断完之后执行
j--
,j的值是
-1
。
所以最后打印的值应该是
i=1,j=-1
需要注意的环节我用红字标出来了。
作者:
王雷
时间:
2012-9-26 08:47
问题已解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2