我正在做一个作业,其中我必须使用嵌套循环来编程位于其侧面的星号金字塔。 该程序的输出应如下所示:
*
**
***
****
***
**
*
当我运行程序时,它仅显示代码的最后四行。我不知道为什么前三个没有出现。 这是我的代码:
public class Main
{
public static void main(String[] args) {
for(int a = 0; a < 8; a++) //1
{
if(a < 4){
for(int b = a; b < 4; b++)
{
System.out.print("*");
}
}
if(a >= 4)
for(int c = a; c < 4; c++)
{
System.out.print("*");
}
System.out.println();
} //loop 1
}
}
这是我的输出:
****
***
**
*
(输出之后有一些空白,我没有包含。这是由外部for循环迭代八次引起的。)如何使程序正确显示所有代码,而不仅仅是最后四个?线?
任何帮助将不胜感激。
答案 0 :(得分:1)
您的逻辑中有几个错误:
rows
,因此第一个循环应迭代到a < 7
nested loop
应该从0
迭代到a
nested loop
应该从a
到7
if-else
而不是两个if
语句这是我测试过的完整解决方案:
for(int a = 0; a < 7; a++) {
if(a < 4){
for(int b = 0; b <= a; b++)
System.out.print("*");
}else {
for(int c = a; c < 7; c++)
System.out.print("*");
}
System.out.println();
}
输出:
*
**
***
****
***
**
*
编辑:
如评论中所述,您还可以将外循环分为两部分,以删除条件,如下所示:
for(int a = 0; a < 4; a++) {
for(int b = 0; b <= a; b++)
System.out.print("*");
System.out.println();
}
for(int a = 4; a <= 7; a++) {
for(int b = a; b < 7; b++)
System.out.print("*");
System.out.println();
}
答案 1 :(得分:0)
您已经关闭。尝试这样的事情:
int size = 4;
for(int line = 1; line < size * 2; line++) {
if(line <= size) {
for(int i = 0; i < line; i++) {
System.out.print("*");
}
}
else {
for(int i = 0; i < size * 2 - line; i++) {
System.out.print("*");
}
}
System.out.println();
}