Как я могу распечатать это с помощью циклов for?

#java

#java

Вопрос:

Как я могу распечатать это с помощью циклов for?

      1
    22
   333
  4444
 55555
 

Я пробовал это. Но он печатает не то, что я хочу распечатать.

 public class void main(String[] args) {
int last = 5, first = 1;
for (int i = 1; i <= last; i  ) {
    for (int j = last; j > i; j  ) {
        System.out.print(" ");
    }
    for (int k = i; k >= 1; k--){
        System.out.print(k);
    }
    System.out.println();  
}
 

}

Он просто печатает это.

      1
    21
   321
  4321
 54321
 

Комментарии:

1. смотрите мое редактирование ниже

Ответ №1:

Как вы можете видеть при первой печати, это правильно, тогда, когда k равно i , так что просто печатайте i

 System.out.print(i);
 

Редактировать

В соответствии с вашим отредактированным кодом, внесите вышеуказанные изменения, пожалуйста

 for (int j = last; j > i; j--) {    
 

вывод

     1
   22
  333
 4444
55555
 

Финал

     int last = 5;
    for (int i = 1; i <= last; i  ) {
        for (int j = last; j > i; j--) {
            System.out.print(" ");
        }
        for (int k = i; k >= 1; k--){
            System.out.print(i);
        }
        System.out.println();  
    }
 

Ответ №2:

Ваше новое решение проблемы просто измените k на i System.out.print(i)

         int last = 5, first = 1;
    for (int i = 1; i <= last; i  ) {
        for (int j = last; j > i; j--) {
            System.out.print(" ");
        }
        for (int k = i; k >= 1; k--){
            System.out.print(i);
        }
        System.out.println();
    }
 

Вывод:

        1
      22
     333
    4444
   55555
 

Комментарии:

1. Здравствуйте. Главное, чего я хочу добиться, это получить пробелы перед 1. Например, «1» это. Могу ли я как-нибудь это сделать?

2. Можете ли вы проверить, что я опубликовал еще раз, пожалуйста? Я отредактировал его. Теперь он показывает, что я хочу сделать.

3. @Edmund проверьте .

4. @Edmund чтобы стать хорошим разработчиком, вы должны улучшить свои навыки поиска. 🙂

Ответ №3:

Чтобы получить рабочий код, полезно сначала описать подробное решение словами. Это может быть:

  • Чтобы напечатать треугольник высоты height , отдельно распечатайте каждую строку от 1 до n .
    • Чтобы напечатать одну строку row , определите:
      • Сколько пробелов ему нужно.
      • Сколько цифр ему нужно.
      • Какую цифру печатать.
      • Цифра для печати совпадает с номером строки row .
      • Количество цифр digits также совпадает с номером строки row .
      • Количество пробелов spaces зависит от общей длины строки.
      • Количество пробелов равно width - digits .
      • Чтобы печатать символ повторно, используйте for цикл, считая от 0 до, но исключая повторение.

Затем это описание преобразуется в этот код:

 public static void main(String[] args) {
    int height = 5;
    int width = height;   // can also be larger than height

    for (int row = 1; row <= height; row  ) {
        int digit = row;
        int digits = row;
        int spaces = width - digits;

        for (int i = 0; i < spaces; i  ) {
            System.out.print(' ');
        }
        for (int i = 0; i < digits; i  ) {
            System.out.print(digit);   // assuming that digit needs only a single character to print
        }
        System.out.println();
    }
}
 

Конечно, эта программа длиннее других, но при пошаговом просмотре с помощью отладчика у вас есть вся информация о текущем состоянии, записанная в переменных. Глядя на значения переменных, вы всегда можете спросить себя: имеет ли это смысл и подходит ли spaces и digits и width вместе?

Эта программа также разбивает общую работу на два этапа. На первом этапе определите, что печатать и сколько, а затем просто распечатайте это.

Ответ №4:

В каждом цикле количество пробелов перед заданным числом i равно MaxNumber — i, а время отображения текущего числа равно i:

     for (int i = 1; i <= 5; i  )
    {
        String blanks = "";
        for (int j = 1; j <= 5-i; j  )
        {
            blanks  = " ";
        }
        String number = "";
        for(int k = 1; k <= i; k  )
        {
            number  = i;
        }
        System.out.print(blanks   number);
        System.out.println();
    }