Число уменьшений вложенного цикла

#java #nested-loops

#java #вложенные циклы

Вопрос:

Создайте класс, который запрашивает у пользователя число, а затем распечатайте следующий шаблон на основе ввода int.

Итак, код, который я создал, выглядел следующим образом…

 12345 
 1234 
  123 
   12 
  

Но это должно выглядеть так

     5
   45
  345
 2345
12345
  
 Scanner tri = new Scanner(System.in);
System.out.println("Enter a postive integer.");
int shape = tri.nextInt();
for(int c = shape; c > 1; --c){
    for (int a = 1; a <= shape-c; a  ){
        System.out.print(" ");
    }
    for(int d = 1; d <= c; d  ){
        System.out.print(d);
    }
    System.out.println(" ");
  

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

1. Ваш цикл, печатающий номера строки, всегда начинается с 1 ( for(int d = 1; ... ), так почему вы вообще ожидаете, что он будет печатать строки, начинающиеся с большего числа?

Ответ №1:

Не могли бы вы попробовать этот код ниже?

 Scanner tri = new Scanner(System.in);
System.out.println("Enter a postive integer.");
int shape = tri.nextInt();

for (int c = shape; c >= 1; --c) {
    for (int a = 1; a <= c; a  ) {
        System.out.print(" ");
    }
    for (int d = c; d <= shape; d  ) {
        System.out.print(d);
    }
    System.out.println(" ");
}

// result
//     5 
//    45 
//   345 
//  2345 
// 12345 
  

Ответ №2:

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

В цикле возьмите подстроку вашего числа и заполните оставшуюся пробелами. Мой код:

 public static void pattern(int number)
    {
        String s=Integer.toString(number);
        String padding="";
        for(int i=0;i<s.length();i  ,padding =" ");
        for(int i=1;i<=s.length();i  )
        {
            System.out.println(padding.substring(i) s.substring(s.length()-i));
        }
    }
  

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

1. Я в основном форматирую его (добавляя необходимое количество пробелов), используя заполнение.