打印 "triangle" 个星星时出现循环错误
Loop error when printing "triangle" of stars
我正在尝试使用嵌套循环打印下图(我应该使用 for & 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;
}
提示:
看看 m=5 - (2×l);
一旦 l=3
结果将为负,第一个 while 循环将不会被执行
就像你给n加2一样,你必须从m中减去2。如果我理解得很好,m 是你的 space 数,n 是你的星星数,所以如果你加两颗星; n+2
那么你也必须删除 space :m - 2
因为添加的两颗星星占据了 space.
m = m - 2;
n = n + 2;
编辑:您还必须更改编辑 n 的 while 循环,以免更改 n:
int temp = n;
while(temp > (2*l)){
System.out.print("*");
temp++;
}
错误是您没有在每个循环中重置 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();
}
使用嵌套 for 循环,外循环沿行向下移动,内循环沿列移动。每次通过内部循环都应该检查 ro 是否放置了空 space 或星号。这可以通过 if 语句来完成,在 for 循环中使用整数变量来确定何时放置 space 或星号。此算法将根据您想要的形状而有所不同。
或者,使用双索引数组在这里可能会很有趣。更复杂,但如果您需要使用 while 循环,可能需要注意一下。可以使用 for 循环用“”或“*”填充双索引 char 数组,然后简单地打印出数组的 ghe 内容,同时在打印后将值设置为 null 并检查数组是否是否为空。
也许其中一些有用。编码愉快。
我正在尝试使用嵌套循环打印下图(我应该使用 for & 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;
}
提示: 看看 m=5 - (2×l);
一旦 l=3 结果将为负,第一个 while 循环将不会被执行
就像你给n加2一样,你必须从m中减去2。如果我理解得很好,m 是你的 space 数,n 是你的星星数,所以如果你加两颗星; n+2
那么你也必须删除 space :m - 2
因为添加的两颗星星占据了 space.
m = m - 2;
n = n + 2;
编辑:您还必须更改编辑 n 的 while 循环,以免更改 n:
int temp = n;
while(temp > (2*l)){
System.out.print("*");
temp++;
}
错误是您没有在每个循环中重置 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();
}
使用嵌套 for 循环,外循环沿行向下移动,内循环沿列移动。每次通过内部循环都应该检查 ro 是否放置了空 space 或星号。这可以通过 if 语句来完成,在 for 循环中使用整数变量来确定何时放置 space 或星号。此算法将根据您想要的形状而有所不同。
或者,使用双索引数组在这里可能会很有趣。更复杂,但如果您需要使用 while 循环,可能需要注意一下。可以使用 for 循环用“”或“*”填充双索引 char 数组,然后简单地打印出数组的 ghe 内容,同时在打印后将值设置为 null 并检查数组是否是否为空。
也许其中一些有用。编码愉快。