for(int i=0;i<=3;i++)
{
for(int j=1;j<=2*i-1;j++)
System.out.println(i);
}
第一个循环后i
的值仍应为0
,但会增加到1
。
这是我不清楚代码的地方。谁能解释一下呢?
答案 0 :(得分:2)
当i
为0
时,内循环(基于j
的值的循环)不会运行。条件的计算结果为j<=-1
,因此永远不会输入循环,并且永远不会执行System.out.println
语句。仅在第二个循环上,当i
为1
时,第二个循环才有机会执行。
答案 1 :(得分:1)
在内循环中,需要满足条件“for(int j = 1; j <= 2 * i-1; j ++)”,在i = 0的情况下,该循环不会在第一次迭代中执行因此它将进入第二次迭代,即i = 1.
答案 2 :(得分:0)
第一次迭代
for(int i=0;i<=3;i++) i = 0,true,
{
for(int j=1;j<=2*i-1;j++) j=1 , j<=-1 which is false . so it is skipping
System.out.println(i); prints nothing
}
第二次迭代
for(int i=0;i<=3;i++) i = 1,true,
{
for(int j=1;j<=2*i-1;j++) j=1 , j<=1 which is true. so now it runs loop inside
System.out.println(i); so now prints 1
}
如果你是一个开始循环。始终绘制trace table dry runs