2016-11-07 53 views
0

作爲我的cs任務的一部分,我們必須在java中使用嵌套for循環創建不同的設計。我遇到的一個問題是我們 此任務的目標是使用嵌套循環重新創建樹,但樹的高度可以根據用戶期望的高度而改變。這是我的代碼在java中使用嵌套循環創建設計

int nline = 10; 
int nstar = 1; 
int nspace = nline - 1; 

for (int i = 1; i <= nline; i++) { 
    for (int y = 1; y <= nspace; y++) 
     System.out.print(" "); 
    for (int x = 1; x <= nstar; x++) 
     System.out.print("\\|/ "); 
    System.out.println(); 
    nstar++; 
    nspace--; 
} 

for (int i = 1; i <= 2; i++) { 
    nspace = nline + 5; 
    for (int x = 1; x <= nspace; x++) 
     System.out.print(" "); 
    System.out.println("|||"); 
} 

for (int i = 1; i <= 1; i++) { 
    nspace = nline + 4; 
    for (int x = 1; x <= nspace; x++) 
     System.out.print(" "); 
    System.out.println("_|||_"); 
} 

我目前的輸出看起來像這樣,我該如何糾正代碼,使輸出顯示在上面的鏈接?

  \|/ 
     \|/ \|/ 
     \|/ \|/ \|/ 
     \|/ \|/ \|/ \|/ 
    \|/ \|/ \|/ \|/ \|/ 
    \|/ \|/ \|/ \|/ \|/ \|/ 
    \|/ \|/ \|/ \|/ \|/ \|/ \|/ 
    \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ 
\|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ 
\|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ \|/ 
       ||| 
       ||| 
       _|||_ 
+0

「我遇到了這個問題」 - 您能更準確地描述問題嗎?樹看起來有趣嗎?你有例外嗎?你的鍵盤着火了嗎? – bradimus

+0

和你的問題是? –

+0

「樹看起來很有趣」也不是很好的描述。 – Arkadiy

回答

2

不是完整的答案,而是一些提示。爲了簡單起見,我們只看一下樹的上半部分(你的第一個for循環)

本節的癥結在於,你必須在每一行中打印哪些部分取決於樹的高度。

你是以下(空格和樹的一部分)的方法是不是真的動態,嘗試在其中所需要的所有部件(空格,樹葉,樹幹,更加葉)拆分起來:

所以你第一個for循環可能看起來像這樣:

int height = 10; 

for (int line = 0; line < height ; line++){ 

    // print the spaces needed for this line 
    int spaces = ... 
    for (int x = 0 ; x < spaces ; x++){ 
     System.out.print(" "); 
    } 

    // print the leaves left of the trunk 
    int leafes_l = ... 
    for (int x = 0 ; x < leafes_l ; x++){ 
     System.out.print("\\"); 
    } 

    // print the trunk 
    System.out.print("|"); 

    // print the leaves right of the trunk 
    int leafes_r = ... 
    for (int x = 0 ; x < leafes_r ; x++){ 
     System.out.print("/"); 
    } 

    System.out.println(""); 

} 
-3

這是應該工作的東西。這假設後備箱3寬。如果你真的必須只出現在循環中,你可以將單行System.out.print(「...」)封裝在一個循環中進行循環。

public static void printTree(int leavesHeight, int trunkHeight) { 

    /* Print Trunk & Leaves */ 
    for (int i = 0; i < leavesHeight; i++) { 
     int lineLength = (2 * i + 1); 

     /* Print Spaces */ 
     for (int j = 0; j < leavesHeight - 1 - i; j++) { 
      System.out.print(" "); 
     } 

     /* Print Left Leaves */ 
     for (int j = 1; j <= lineLength/2; j++) { 
      System.out.print("\\"); 
     } 

     /* Print Trunk */ 
     System.out.print("|"); 

     /* Print Right Leaves */ 
     for (int j = ((lineLength/2) + 1); j < lineLength; j++) { 
      System.out.print("/"); 
     } 
     System.out.print("\n"); 
    } 

    /* Print Trunk */ 
    for (int i = 0; i < trunkHeight - 1; i++) { 

     /* Print Spaces */ 
     for (int j = 0; j < (leavesHeight - 2); j++) { 
      System.out.print(" "); 
     } 

     for (int j = 0; j < 3; j++) { 
      System.out.print("|"); 
     } 
     System.out.print("\n"); 
    } 

    /* Print Spaces */ 
    for (int j = 0; j < (leavesHeight - 3); j++) { 
     System.out.print(" "); 
    } 

    /* Print Bottom Trunk */ 
    System.out.print("_|||_"); 

}