理解这个嵌套循环有困难

  • 本文关键字:嵌套循环 java
  • 更新时间 :
  • 英文 :


我有一段时间没有写代码了,所以我正在刷新我的知识。我正在翻看我以前的期中试卷,我很难理解嵌套循环的这段特殊代码,以及为什么它会打印出它所做的输出。


public class Loops {
public static void main(String[] args) {
int i=0;
while (i < 4){
System.out.println ('*');
for(int j=i; j>0; j--){
System.out.print('*');
}
i += 1;
}
System.out.println ("nWow");
while (i > 0){
System.out.print('*');
i -= 1;
}

}
}

我运行了代码,它给出了这个输出,我试图理解为什么:

*
*
**
***
***
Wow
****

当我试图弄清楚它时,我以

结束
*
**
***
****
Wow
****

我的思考过程: I为0,I小于4打印星号J = i i = 0 0不大于0。退出,然后给i加1。I是1,I小于4打印星号j = 1, i = 1, 1大于0,所以打印一个星号.递减j,所以j现在是0,0不大于0,退出,给i加1。I是2,I小于4打印星号J = 2,2大于0,所以**打印一个**,递减1,J现在是1。1大于0,所以打印一个星号递减1,j现在是0,0不大于0,退出并给i加1。I现在是3。3小于4。so打印星号J = 3。3大于0,所以打印星号. 递减1,j现在是2,2大于0打印星号. 减1,j现在是1。1大于0,所以打印一个星号. 现在我们减少j, j现在是0,我们退出,然后给i加1,i现在是4,所以我们进入下一个代码位,打印"Wow">. 因为i是4,while循环将打印4 *

我理解while循环错误吗?

让我们只看这一部分,因为最后一部分似乎没有混淆:

while (i < 4){
System.out.println ('*');
for(int j=i; j>0; j--){
System.out.print('*');
}
i += 1;
}

这是i的每个值的打印结果:

<表类>i输出0*n1*n*2*n**3*n***

因此,您只需要了解println()方法是如何工作的。

println()方法类似于print()方法,除了在打印结果之后将光标移动到下一行

.希望这能解决你的疑问!!

while (i < 4){ //the last iteration is i=3 (3<4=true, in loop); but 
//the end is i += 1 (is 4) 
System.out.println ('*');
for(int j=i; j>0; j--){ //first 0 is not 0>0(false), zero is skip
System.out.print('*');
}
i += 1;
}
//and after upper loop i =4
System.out.println ("nWow");
while (i > 0){ 
System.out.print('*');  //four *, 4,3,2,1
i -= 1;
}

最新更新