2014-11-04 2 views
0

Эй, ребята, так что я работаю над проблемой, когда мне нужно напечататьИспользование циклов для печати шаблонов

1 2 3 4 5 6 
1 2 3 4 5 
1 2 3 4 
1 2 3 
1 2 
1 
public class Set_5_P5_18b { 

    public static void main(String[] args) { 
     int x; 
     String y; 
     x = 1; 
     y = ""; 

     System.out.println("Pattern B:"); 
     while (x < 7) { 
      y = y + x + " "; 
       x++; 
     } 
     System.out.println(y); 

    } 

} 

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

+7

Что вы пробовали? Вам нужен еще один цикл. Обратите внимание, что SO не является отладчиком. –

+0

Где вторая линия? – eduyayo

+0

Начните с n = 6 и напечатайте i = 0 до n и уменьшите n для каждого шага ... –

ответ

1

Юо нужно, чтобы внешняя петля работала, скажем, в диапазоне от значений от 6 до 1. Для каждого значения x вам нужен внутренний цикл, который запускается для значений 1 ... x и выводит значения в строке.

Помните об этом и попробуйте сначала создать псевдокод, а затем код реализации.

0

Ваш вывод может наблюдаться как 2-мерный массив, в котором:

  • индекса i растет сверху-вниз и представляет собой индекс строки
  • индекс j растет влево-вправо и представляет собой индекс столбца

enter image description here

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

Вот как вы можете добиться этого с двумя for петель:

int colSize = 6; 
int rowSize = 6; 
for(int i = 1; i <= rowSize; i++) { 
    for(int j = 1; j <= colSize; j++) { 
     System.out.print(j + " ");  // print individual column values 
    } 
    System.out.println();    // print new line for the next row 
    colSize--;       // decrement column size since column size decreases after each row 
} 
0

вам придется сбросить переменные х, когда вы бросаете то время как: P

0

Так часто, когда вы пишете для цикла, и вы понимаете, что хотите, чтобы определенный аспект цикла for изменялся каждый раз, когда программа итерации, 9/10 раз вы хотите использовать вложенные для циклов (для цикла в цикле for).

Итак, каждый раз, когда вы повторяете цикл for, вы хотите уменьшить продолжительность цикла for. Так что ...

for (int num =1; num < <number that you want to change>; num++) {}

Вот метод кода.

public static void print(int x) { 
    for (int lengthOfFor = x; lengthOfFor > 0; lengthOfFor--) { 
     for (int num = 1; num <= lengthOfFor; num++) { 
      System.out.print(num + " "); 
     } 
     System.out.print("\n"); 
    } 
} 

Так вы можете вызвать метод.

public class print 
{ 
    public static void print(int x) { 
     for (int lengthOfFor = x; lengthOfFor > 0; lengthOfFor--) { 
      for (int num = 1; num <= lengthOfFor; num++) { 
       System.out.print(num + " "); 
      } 
      System.out.print("\n"); 
     } 
    } 
    public static void main (String[] args) { 
     print(6); 
    } 
} 
0

решение:

public static void printPattern(int rows) { 
    IntStream.range(0, rows).map(r -> rows - r).forEach(x -> { 
     IntStream.rangeClosed(1, x).forEach(y -> { 
      System.out.print(String.format("%3d", y)); 
     }); 
     System.out.println(); 
    }); 
} 

Использование:

printPattern(9); 

Выход:

1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 
1 2 3 4 5 6 7 
1 2 3 4 5 6 
1 2 3 4 5 
1 2 3 4 
1 2 3 
1 2 
1 
Смежные вопросы