代码1:我在第一个while循环之外声明了int b = 0
:
public class apples {
public static void main(String args[]){
int a = 1;
int b = 0;
while (a < 5){
while(b < a){
System.out.print("y");
b++;
}
System.out.println();
a++;
}
}
}
结果:
y
y
y
y
代码2:这里我在第一个while循环中声明了int b = 0
:
public class apples {
public static void main(String args[]){
int a = 1;
while (a < 5){
int b = 0;
while(b < a){
System.out.print("y");
b++;
}
System.out.println();
a++;
}
}
}
结果:
y
yy
yyy
yyyy
正如你所看到的,当我在第一个while循环中和循环之外声明int b = 0
时,我会得到不同的结果。
谁能解释为什么会这样?
谢谢!
答案 0 :(得分:1)
当b在循环之外时,总会有一次打印,因为a
和b
只被初始化一次,所以它的工作原理如下:
b=0 a=1 -> 1 iteration for b to be equal to a -> 1 print
b=1 a=2 -> 1 iteration for b to be equal to a -> 1 print and so on
在第二个循环中a
以相同的方式增加,但b
总是在循环中用0初始化,所以它会像这样工作:
b=0 a=1 -> 1 iteration for b to be equal to a -> one print
b=0 a=2 -> 2 iterations for b to be equal to a -> two prints and so on.
答案 1 :(得分:1)
在第一种情况下,b最初为0,a为1,进入循环,打印一个y,然后b变为1,现在b不再大于1. 所以它继续递增和循环。现在b = 1,a = 2,再次进入内循环,再次打印y 因为1现在变为2,而2(b)不大于2(a)所以在,你每行只有1年
在第二种情况下,每次外循环迭代 b都会重新初始化为零。因此,每次打印更多'y'时。
见下面a,b的值,其中打印了'y'
案例1:
0,1
1,2
2,3
3,4
4,5
案例2:
0,1
0,2
1,2
0,3
1,3
2,3
0,4
1,4
.
.
.
答案 2 :(得分:1)
在这种情况下,足够System.out.println
s永远不够,只需写下来就可以学到很多东西:
int a = 1;
int b = 0;
while (a < 5) {
System.out.println("Outer loop: a="+a+", b="+b);
while (b < a) {
System.out.println("Inner loop: a="+a+", b="+b);
b++;
}
System.out.println();
a++;
}
使用它,更改初始值,在内循环之后/之前重置值,...这是学习内容的最佳方式。
答案 3 :(得分:0)