黑马程序员技术交流社区
标题:
关于for循环的问题
[打印本页]
作者:
java陈辉
时间:
2013-12-6 21:57
标题:
关于for循环的问题
本帖最后由 java陈辉 于 2013-12-7 09:53 编辑
public class Demo
{
public static void main(String []args)
{
int i = 0, j = 5;
tp: for ( ; ; )
{
i++;
for( ; ; )
{
if(i > j--)
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j);
}
}
以上i和j打印的结果是多少?请详细的讲解一下步骤,谢谢。
作者:
25343215
时间:
2013-12-6 22:09
本帖最后由 25343215 于 2013-12-6 22:16 编辑
结果:i = 1, j = -1
分析见代码:
for语句的格式:
for (初始化语句; 条件语句; 控制语句)
for循环中,“初始化语句”、“条件语句”和“控制语句”都可以省略,但是其间的分号不能省略
public class Test {
public static void main(String[] args) {
int i = 0, j = 5;
tp: for (;;) { // 这里相当于 whie(true)
i++; // 在这里 int i=1;
for (;;) {// 这里相当于 whie(true),所以一直就在内层循环中
if (i > j--)
// 在内层while
// 循环里面,i变量一直不变,j在每次循环之后-1,直到j=0时,i>j,跳出循环到标记tp处,同时j-1=-1。
break tp;
}
}
sop("i = " + i + ", j = " + j);
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
复制代码
作者:
依然
时间:
2013-12-6 22:14
输出结果是:i=1,j=-1
分析:
int i = 0, j = 5;
tp: for ( ; ; )
{
i++;
for( ; ; )
{
if(i > j--)
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j);
复制代码
代码中,外层for循环一次,内层循环6次
进入第一层循环,执行i++,后执行内层循环,
所以进入开始内层循环的时候,i=1,j=5;
内层循环的条件是i>j-- ,也就是j为0时候跳出循环
内层循环:
第一次,i=1,j=5, j-- 再次循环
第二次,i=1,j=4, j-- 再次循环
第三次,i=1,j=3, j-- 再次循环
第四次,i=1,j=2, j-- 再次循环
第五次,i=1,j=1, j-- 再次循环
第六次,i=1,j=0, j-- 符合if语句,跳出tp标准的外层循环。
此题中的重点在与,第六次循环结束后j--是先使用j变量后,在改变j的值。
第六次相当于:
if(i>j)
{
j=j-1;
break tp;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2