2016-11-07 4 views
0

Как часть моего назначения CS, мы должны создавать различные конструкции в Java с использованием вложенных для loops.The один у меня возникли проблемы с это мы Цель этого задания заключается в воссоздании дерева с использованием вложенных циклов, но высота дерева может изменяться в зависимости от желаемой высоты пользователя. Это мой кодСоздание конструкции с вложенными циклами в 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

Не полный ответ, но некоторые подсказки. Чтобы это было просто, давайте посмотрим на верхнюю часть дерева (ваш первый цикл)

Суть этого раздела состоит в том, как части, которые вы должны печатать в каждой строке, зависят от высоты дерева ,

подход вы следуете (пространств и деревьев части) не очень динамичный, разделите его во всех частях, которые необходимы (пробелы, листья, ствол, даже больше листьев):

Так что ваши первая для петли может выглядеть примерно так:

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("_|||_"); 

}