输出空格问题

输出空格问题

int m=1,n=1;
		for(m=1;m<=5;m++){
			n=1;
			for(n=1;n<=(4-n);n++){
				System.out.print(" ");
			}
		    for(n=1;n<=(2*m+1);n++){
		        System.out.print("*");
		    }System.out.println();
		}

https://img1.sycdn.imooc.com//climg/6374c0f20994d1c129951455.jpg每一行前面的空格怎么都是相同的,我在第一个循环里用的n<=(4-n)就是想第一行空三个空格,第二行空两格,第三行空一个,第四行不空,怎么没有表现出来,是哪里写错了吗

正在回答

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

1回答

同学你好,基于外层循环,可以分析一下代码的执行过程:

1.当外层循环执行第一次时,进入循环体,此时n=1;

2.执行内层循环,此时再次将n设置为1;

3.执行判断条件,判断1<=3,结果为true,进入循环体,打印空格;

4.执行n++,将n的值变为2;

5.执行判断条件,判断2<=2,结果为true,进入循环体,打印空格;

6.执行n++,将n的值变为3;

7.执行判断条件,判断3<=1,结果为false,循环结束;

8.省略打印星号的过程;

9.1.当外层循环执行第二次时,进入循环体;

10.执行内层循环,此时将n设置为1;

11.执行判断条件,判断1<=3,结果为true,进入循环体,打印空格;

12.执行n++,将n的值变为2;

13.执行判断条件,判断2<=2,结果为true,进入循环体,打印空格;

14.执行n++,将n的值变为3;

15.执行判断条件,判断3<=1,结果为false,循环结束;

从上面的运行流程可以看出,n的值更改会影响判断条件,所以空格永远都只会输出两次。

基于同学的代码,老师没有理解同学的解题思路,所以无法给出明确的解决方案。不过建议同学在多个循环中,不要使用同一个控制变量。例如可以外层循环使用m,内层打印空格使用n,内层打印星号使用k,这样在分析逻辑和实现代码的时候更容易。循环变量公用的地方越多,需要考虑的因素越多,对初学者来讲难度越大。

祝学习愉快~

  • qq_慕的地4190246 提问者 #1
    int m=1,n=1,k;
    		for(m=1;m<=5;m++){
    		
    			for(n=1;n<=(5-m);n++){
    				System.out.print(" ");
    			}
    		    for(k=1;k<=(2*m+1);k++){
    		        System.out.print("*");
    		    }System.out.println();
    		}

    https://img1.sycdn.imooc.com//climg/63759902096d3a7015911571.jpg原本的想法是在输出空格的这个判断条件,m是第一行时n循环四个空格、m是第二行循环三个空格。。。直到第五行循环0个空格,原来的第一个内循环判断条件错写成n了,这个还有问题吗

    2022-11-17 10:19:10
  • 同学你好,修改之后的代码是正确的。

    祝学习愉快~

    2022-11-17 10:30:45
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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