在Java中,如何使用嵌套的for循环来编码星号金字塔?

问题描述 投票:0回答:2

我正在做一个作业,在该作业中,我必须使用嵌套循环来编写位于其侧面的星号金字塔。该程序的输出应如下所示:

*    
**    
***    
**** 
***
**
*

当我运行程序时,它仅显示代码的最后四行。我不知道为什么前三个没有出现。这是我的代码:

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循环迭代八次引起的。)如何使我的程序正确显示所有代码,而不仅仅是最后四行? ?

任何帮助将不胜感激。

java loops nested-loops
2个回答
0
投票

您的逻辑中有几个错误:

  1. 因为您只需要7 rows,所以第一个循环应迭代到a < 7
  2. 在前三行中,您的nested loop应该从0迭代到a
  3. 此后,另一个nested loop应该从a转到7
  4. 最好使用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();
}

输出:

*
**
***
****
***
**
*

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.