抱歉,请老师我有点迷糊,请老师讲解下这个程序,感谢

抱歉,请老师我有点迷糊,请老师讲解下这个程序,感谢

http://img1.sycdn.imooc.com//climg/5f72fed50924657915850919.jpg在习题5—3中,让用for循环做个这种星号梯形,我用for完成后,想用while试试,结果弄了将近半小时也没弄出来,就请老师写了一个,我自己来研究,然后发现一个数据初始化的问题。如图程序是老师写的,输出是符合题目要求的。我发现老师在while循环结构外int了一个a一个c,但是把b放在外层循环里边进行初始化。我就想能不能把b拿出来,放在循环结构外面。可是拿出来后我发现程序输出成了这样http://img1.sycdn.imooc.com//climg/5f72ffe60944f12916130945.jpg为什么空格只在第一行输出啊?我自己读代码的时候有点混乱,找不到哪里出错了。烦请老师讲解下,感谢!

正在回答 回答被采纳积分+1

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

2回答
好帮手慕小尤 2020-09-29 18:22:28

同学你好,1. 如果在while (a <= 5)外定义变量b,则在while (b> 0)循环中会将变量b修改为0。并且没有在重新执行while (b> 0) 循环前,计算出空格数量(b没有重新赋值,值依然为0),所以导致出现同学出现的问题。

2. 在while (a <= 5) 循环内定义变量b,在while (b> 0)循环中将变量b修改为0时,则在重新执行while (b> 0) 循环时,会重新为b变量赋值(计算出空格数量),从而实现梯形。

3. 具体内容添加了注释,同学可以查看。如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//外层控制行,内层两个,第一个控制空格第二个控制星号
    public static void main(String[] args) {
        int a = 1, c = 1;
        // 行数为5,则当a小于等于5时,则进入循环
        while (a <= 5) {
            // 空格数量,5-行数
            int b = 5 - a;
            // 当b大于0时,则进入循环
            while (b> 0) {
                System.out.print(" ");
                // 当 b-1小于等于0时,则退出循环,执行while (c <= (2 * a + 1))循环
                b--;
            }
            // 设置初始值
            c = 1;
            // 当c小于等于 (2 * 行数 + 1)时,进入循环
            while (c <= (2 * a + 1)) {
                System.out.print("*");
                // 当c+1大于 (2 * 行数 + 1)时结束循环,执行a++
                c++;
            }
            System.out.println();
            // 当a+1大于5时,则结束循环,否则执行继续执行循环(执行int b = 5 - a;等一下内容)
            a++;
        }
    }

如果我的回答解决了你的疑惑,请采纳,祝学习愉快!

  • 提问者 昜某人 #1
    感谢老师,我自己在想的时候有点犯迷糊,就是在b赋值这里有点混乱,感谢
    2020-09-29 20:46:17
昜某人 提问者 2020-09-29 17:38:05

public static void main(String[] args) {

int a = 1, c = 1;

int b=5-a;

while (a <= 5) {//外层控制行,内层两个,第一个控制空格第二个控制星号

//int b = 5 - a;

while (b> 0) {

System.out.print(" ");

b--;

}

c = 1;

while (c <= (2 * a + 1)) {

System.out.print("*");

c++;

}

System.out.println();

a++;

}

}


}

代码,//注释了两个int,循环里面是老师写的,外面是我改的

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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