2016-02-18 4 views
-4

Мне нужно создать это для цикла.Последовательность чисел пирамид с использованием цикла

Выход

Output

Мой код здесь:

public class Assign01 { 
    public static void main(String[] args) { 
     int n, i = 0, k; 
     for (n = 1; n <= 5; n++) { 
      for (i = 1; i <= n; i++) { 
       System.out.print(+i + "\t"); 
      } 
      System.out.print("\n"); 
     } 
    } 
} 

И это Ouput.

Выходной

Output

+0

Ожидаемый и фактический выход выглядят очень одинаково для меня. Пожалуйста, отредактируйте свой вопрос и включите ожидаемый и фактический вывод в удобочитаемой форме. –

+0

Похоже, вы на правильном пути. Во-первых, вы должны добавить пробел, а не вкладку. Во-вторых, попробуйте добавить пробелы в левой части (первая строка 8 пробелов, затем 6, затем 4). Как только вы это сделаете, вы в основном закончите. Просто добавьте еще один цикл, как тот, который у вас есть, но отсчет и не вверх. – Neil

+1

Есть так много результатов онлайн для такого рода вещей ... –

ответ

1

Запуск петли в обратном направлении до по возрастанию направление.

public class Assign01 { 
    public static void main(String[] args) { 
     int n, i = 0, k; 
     int maxN = 5; 
     for (n = 1; n <= maxN; n++) { 
      // below prints the tabs to pad the line. 
      // this prints a tab (maxN - n) times. 
      for(k = n; k < maxN; k++) { 
       System.out.print("\t"); 
      } 
      // below prints the number starting from the biggest, till the lowest 
      // I use > 1 instead of >= 1 because you don't want to duplicate 1 twice. 
      for (i = n; i > 1; i--) { 
       System.out.print(i + "\t"); 
      } 
      for (i = 1; i <= n; i++) { 
       System.out.print(i + "\t"); 
      } 
      System.out.print("\n"); 
     } 
    } 
} 

выход (мой местный тест):

       1 
         2  1  2 
       3  2  1  2  3 
     4  3  2  1  2  3  4 
5  4  3  2  1  2  3  4  5 
+0

Это было явно * домашнее задание *. Если вы дадите ей ответ, вам нужно как минимум * полностью объяснить, что он делает и почему это работает. – Neil

+0

OK, добавленный информация. – SOFe

1

То, что вы в настоящее время выглядит очень похоже на правой стороне ожидаемого результата. Так что все, что вам нужно сделать, это заполнить левую сторону. Левая сторона как раз наоборот с правой стороны, так давайте посмотрим, как мы можем сделать реверс, что внутренний цикл:

for (i = n; i >= 1; i--) { 
     System.out.print(+i + "\t"); 
    } 

Теперь, если вы берете этот код и добавить его над текущий внутренний цикл вы У меня будет что-то очень близкое к ответу. Все, что вам нужно сделать, это выяснить, как удалить дублированный номер посередине и добавить любые необходимые пробелы для ввода левого и создать форму пирамиды.

0
public class Assign01 { 
    public static final int MIN = 1; 
    public static final int MAX = 5; 

    public static void main(String[] args) { 
     for(int j = MIN; j <= MAX; j++) { 
      for(int i = MIN, k = MAX; i <= MIN + 2*(MAX-MIN); i++) { 
       if(k <= j) { 
        System.out.print("" + k + " "); 
       } else { 
        System.out.print(" "); 
       } 
       if(i < MAX) { 
        k--; 
       } else { 
        k++; 
       } 
      } 
      System.out.println(""); 
     } 
    } 
} 

Печать:

 1   
     2 1 2  
    3 2 1 2 3  
    4 3 2 1 2 3 4 
5 4 3 2 1 2 3 4 5 

И к примеру эта

public static final int MIN = 3; 
public static final int MAX = 9; 

Печать

  3    
      4 3 4   
     5 4 3 4 5   
     6 5 4 3 4 5 6  
    7 6 5 4 3 4 5 6 7  
    8 7 6 5 4 3 4 5 6 7 8 
9 8 7 6 5 4 3 4 5 6 7 8 9 

Учитывая я решаемые в assignme nt, это ваша работа, чтобы выяснить, что я здесь сделал. Это более интересная задача, нет? :)

Смежные вопросы