我正在尝试使用嵌套循环打印下面的图片(我应该用于& while循环):
**
****
******
********
以5个空格开始,每行减少2个。 从2星开始,每行增加2。 结束4行。
我的代码适用于第一行,但它不会在剩余的3行上打印星号。有人能看出错误是什么吗?请不要给出答案,我只需要帮助理解逻辑错误!
int m = 6;
int n = 0;
for(int l = 1; l < 5; l++){
while(m > 0){
System.out.print(" ");
m--;
}
while(n < (2*l)){
System.out.print("*");
n++;
}
System.out.println();
m = 5 - (2*l);
n = n + 2;
}
答案 0 :(得分:0)
提示: 看m = 5 - (2×l);
一旦l = 3 结果将是否定的,并且第一个while循环不会被执行
答案 1 :(得分:0)
就像你在n中添加两个一样,你必须从m中删除2。如果我理解得很好,m是你的空格数,n是你的星数,所以如果加上两颗星; n+2
然后你必须删除这个空格:m - 2
因为两个添加的星星占据了那个空间。
m = m - 2;
n = n + 2;
编辑:您还必须更改编辑n的while循环,以便不更改n:
int temp = n;
while(temp > (2*l)){
System.out.print("*");
temp++;
}
答案 2 :(得分:0)
错误是您不会在每个循环中重置n
变量。在第一个循环之后添加2,其中该点已经大于2 * l
,因此不再打印星星。
将其构造为:
更为明智for (int l = 0; l < 4; l ++) {
for (int i = 0; i < 5 - 2l; i++)
System.out.print(" ");
for (int i = 0; i < 2 + 2l; i++)
System.out.print("*");
System.out.println();
}
答案 3 :(得分:0)
使用嵌套for循环,外循环向下移动行,内循环沿着列移动。每次通过内部循环都应检查ro是否放置空格或星号。这可以通过if语句使用for循环中的整数变量来确定何时放置空格或星号。此算法将根据您想要的形状而有所不同。
或者,使用双索引数组可能会很有趣。如果你需要使用while循环,可以查看更多的文本。也许可以使用for循环来填充双重索引的char数组,并使用&#34; &#34;或者&#34; *&#34;然后只需打印出数组的内容,同时在打印后将值设置为null并检查数组是否为空。
也许其中一些有用。快乐的编码。