在Java中使用嵌套for循环打印金字塔形状的逻辑

问题描述:

我修改了示例代码以获取我正在查找的输出,但我不理解下面的嵌套for循环背后的逻辑。有人能够详细地向我解释每个循环在做什么,为什么以这种方式构建循环?在Java中使用嵌套for循环打印金字塔形状的逻辑

public class Pyramid { 
    public static void main(String[] args) { 
     int size = 15; 

     for (int i = 1; i <= size; i += 2) { 

      for (int k = 0; k < (7 - i/2); k++) { 
       System.out.print(" "); 
      } 

      for (int j = 1; j <= i; j++) { 
       System.out.print("*"); 
      } 

      System.out.println(); 
     } 
    }  
} 

output (below): 

     * 
     *** 
    ***** 
    ******* 
    ********* 
    *********** 
************* 
*************** 
+1

修复你的缩进,它会更清晰你!当绘制金字塔时,您需要在每个'第i行'0..(N-i)/ 2'个空格处绘制,后面跟着1..i'个星号。 – vasek

+0

我已经低估了这个问题,因为没有任何研究的证据。请[编辑]你的问题,包括你已经完成的研究和*精确*你有困难的地方。如果你能做到这一点,我可以收回我的downvote。 –

+0

外环的哪个部分你不明白? – Andreas

嵌套了这样的循环,当你有伪这样的代码被用于:

Do the following x times: 
    Do the following y times: 
     some stuff 
    Do the following z times: 
     some stuff 

在特定情况下,金字塔的大小是动态的,并存储在一个名为size变量。要打印一个金字塔,你必须打印以下的事情size时间:

  • 一些空白和一些*

你怎么打印呢?你计算应该有多少空格和*并打印它们。由于空格和*是动态的,因此您需要for循环来执行此操作,而不是将它们硬编码。

您现在看到结构了吗?

外层循环打印金字塔的每一层。第一个内循环打印空白,第二个内循环打印*