我想知道以下打印三角形的java代码中到底发生了什么:
代码1:我在第一个while循环之外声明了我想知道以下打印三角形的java代码中到底发生了什么:,java,for-loop,while-loop,Java,For Loop,While Loop,代码1:我在第一个while循环之外声明了intb=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++; }
intb=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++;
}
}
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++;
}
}
代码2:这里我在第一个while循环中声明了intb=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++;
}
}
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++;
}
}
如您所见,当我在第一个while'循环内部和该循环外部声明intb=0
时,我得到了不同的结果。
有人能解释为什么会这样吗?
已经谢谢你了 当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.
当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.
当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.
当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.
在第一种情况下,b最初是0,a是1,进入循环,打印一个y,然后b变成1,现在b不再大于1。所以它继续增加a和循环。现在b=1,a=2,再次进入内循环,只打印y一次,因为1现在变成2,2(b的)不大于2(a的),所以,每行只得到1 y 在第二种情况下,每次外部循环迭代时,b都被重新初始化为零。所以每次它都印上更多的“y” 请参见下面打印“y”的a、b值 案例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
.
.
.
在第一种情况下,b最初是0,a是1,进入循环,打印一个y,然后b变成1,现在b不再大于1。所以它继续增加a和循环。现在b=1,a=2,再次进入内循环,只打印y一次,因为1现在变成2,2(b的)不大于2(a的),所以,每行只得到1 y 在第二种情况下,每次外部循环迭代时,b都被重新初始化为零。所以每次它都印上更多的“y” 请参见下面打印“y”的a、b值 案例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
.
.
.
在第一种情况下,b最初是0,a是1,进入循环,打印一个y,然后b变成1,现在b不再大于1。所以它继续增加a和循环。现在b=1,a=2,再次进入内循环,只打印y一次,因为1现在变成2,2(b的)不大于2(a的),所以,每行只得到1 y 在第二种情况下,每次外部循环迭代时,b都被重新初始化为零。所以每次它都印上更多的“y” 请参见下面打印“y”的a、b值 案例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
.
.
.
在第一种情况下,b最初是0,a是1,进入循环,打印一个y,然后b变成1,现在b不再大于1。所以它继续增加a和循环。现在b=1,a=2,再次进入内循环,只打印y一次,因为1现在变成2,2(b的)不大于2(a的),所以,每行只得到1 y 在第二种情况下,每次外部循环迭代时,b都被重新初始化为零。所以每次它都印上更多的“y” 请参见下面打印“y”的a、b值 案例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
.
.
.
在这种情况下,足够的
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++;
}
inta=1;
int b=0;
while(a<5){
System.out.println(“外循环:a=“+a+”,b=“+b”);
while(b
使用它,更改初始值,在内部循环之后/之前重置值。。。这是学习东西的最好方法。在这种情况下,足够的
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++;
}
inta=1;
int b=0;
while(a<5){
System.out.println(“外循环:a=“+a+”,b=“+b”);
while(b
使用它,更改初始值,在内部循环之后/之前重置值。。。这是学习东西的最好方法。在这种情况下,足够的
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++;
}
inta=1;
int b=0;
while(a<5){
System.out.println(“外循环:a=“+a+”,b=“+b”);
while(b
使用它,更改初始值,在内部循环之后/之前重置值。。。这是学习东西的最好方法。在这种情况下,足够的
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++;
}
inta=1;
int b=0;
while(a<5){
System.out.println(“外循环:a=“+a+”,b=“+b”);
while(b
使用它,更改初始值,在内部循环之后/之前重置值。。。这是学习东西的最好方法。嗯,你在诊断和编写代码方面有困难,这在编程中是一个至关重要的方面。因为你的例子很简单