2017-10-11 160 views
-6

我修改了示例代碼以獲取我正在查找的輸出,但我不理解下面的嵌套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

回答

0

嵌套了這樣的循環,當你有僞這樣的代碼被用於:

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

在特定情況下,金字塔的大小是動態的,並存儲在一個名爲size變量。要打印一個金字塔,你必須打印以下的事情size時間:

  • 一些空白和一些*

你怎麼打印呢?你計算應該有多少空格和*並打印它們。由於空格和*是動態的,因此您需要for循環來執行此操作,而不是將它們硬編碼。

您現在看到結構了嗎?

外層循環打印金字塔的每一層。第一個內循環打印空白,第二個內循環打印*