这个代码的执行流程请大神讲一下。我老感觉每一行都只能输出一个*。详细一点谢谢

来源:4-14 Java 循环语句之多重循环

洛辰m

2018-09-12 15:33

public class HelloWorld {

    public static void main(String[] args) {

        

System.out.println("打印直角三角形");

        

// 外层循环控制行数

for (int i = 1; i<=3;i++) {

            

// 内层循环控制每行的*号数

// 内层循环变量的最大值和外层循环变量的值相等

for (int j = 1;j<=i;j++              ) {

                

System.out.print("*");

}

            

// 每打印完一行后进行换行

System.out.println();

}

}

}


写回答 关注

5回答

  • 慕尼黑8452633
    2018-09-12 16:12:22
    已采纳

    for(int j = 1;j<=i;j++)这个循环完后,j进行了重新赋值,所以到第二行的时候,i = 2,j = 1,循环一次,打印一次*,自加1,j = 2,j<=i,又打印一次*,第三次一样

    qq_慕函数...

    没明白为什么内层循环结束后 j进行重新赋值 不应该是j++,所以j变成2了吗?

    2019-05-31 16:18:08

    共 3 条回复 >

  • 慕尼黑1323226
    2018-10-05 17:22:45

    第一行打印一个*,第二行打印2个*,第三行打印3个*,当i=1时,执行内循环一次,当i=2时执行内循环2次,当i=3时执行内循环为3次,每执行一次打印一个*


  • 学而不思则
    2018-10-03 13:28:08

    这是我进步的证明啊!(脸好疼!)

    当i=1时,j赋值等于1,条件成立,输出第1行的1个*,然后j自增1,条件不成立,退出循环。

    *

    当i=2时,j重新赋值为1,条件成立,输出第1个*,然后j自增1,条件成立,进行循环,输出第2个*,然后j再自增1,条件不成立,退出循环。

    **

    以此类推

    ***

    ****

    *****

    (如有错漏欢迎指正)


  • 学而不思则
    2018-10-03 13:12:08

    不好意思,我上面的话不要放在心上,直接退出循环了。

    i是行数,j是一行几个*,

    当i=1时,j赋值等于1,条件成立,输出第1行的1个*,然后j自增1

    当i=2时,j自增后等于2,条件成立,输出第2行的2个*,然后j再自增1

    以此类推

    *

    **

    ***

    ****

    *****

    (如有错漏欢迎指正)


  • 学而不思则
    2018-09-20 12:53:46

    把j<=i换成j==i就行了,因为j<=i的话第二次就是i=2  j=1

    因为j=1满足j<=1的条件所以直接进行循环了

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165182 学习 · 17581 问题

查看课程

相似问题