课程5-3的练习,老年人理解力差,需要老师解答一下一个表达式

课程5-3的练习,老年人理解力差,需要老师解答一下一个表达式

老年人理解力差,需要辅导。首先上我认为写的比较清楚的表达式,运行了一下成功

以下表达式

package Loop;

  

public class StarDemo {

    public static void main(String[] args) {

        /*输出星号组成的梯形(使用嵌套for循环完成)

        定义一个外重循环控制行数,

        里面定义两个内重循环:

            前一个用来控制每一行的空格个数(递减),

            后一个用来控制每一行的星号个数(递增),

        每行结束要进行换行*/

  

        //外重循环 控制行数

        for (int line = 1; line < 6; line++) {

  

            //控制每一行的空格个数(递减)

            for (int space = 4; space >= line; space--) {

                System.out.print(" ");

            }

  

            //控制每一行的星号个数(递增)

            for (int star = 1; star <= (2 * line) + 1; star++) {

                System.out.print("*");

            }

  

            System.out.println();

        }

    }

}

我不理解的是 :

for (int star = 1; star <= (2 * line) + 1; star++) {

                System.out.print("*");

当每一行递增, 星星应该增加2颗,在这个语句中是怎么实现的。 我问这个问题,是因为作为条件变得的第三个表达式 star++ 是递增一个啊?

我理解的for表达式含义: 

int star = 1; s初始值 为 1 

star <= (2 * line) + 1; 当条件S 小于 (2 * line) + 1

star++; star 的值递增一个 

求解答,我没有看到哪一句是递增2个星号,所以不明白



   


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

这样理解,当外重循环的line=1的时候,是第一行,这时候内重循环是for (int star = 1; star <= (2 *1) + 1; star++),也就是star<=3,那么循环是从1开始,执行三次,每次输出一个星号,所以输出三个星号。这样一行就输出完了。

第二次循环,line=2,for (int star = 1; star <= (2 *2) + 1; star++),也就是star<=5,也就是输出5个星号,第二行就输出完了。

所以,第一行输出3个,第二行输出5个,相差两个。

祝学习愉快!

  • 知名奶爸 提问者 #1
    非常感谢!你的回答很到位
    2018-03-09 16:19:22
  • 知名奶爸 提问者 #2
    for (int space = 4; space >= line; space--) { System.out.print(" "); } 请同理说明一下Space这一行,感谢!
    2018-04-15 03:12:32
  • 好帮手慕阿莹 回复 提问者 知名奶爸 #3
    从上到下,第一行在三个星星前边,有四个空格,第二行在5个星星前边有3个空格,以此类推,第一行前边从四个空格,后边依次递减。
    2018-04-15 20:46:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师