#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. Я в основном форматирую его (добавляя необходимое количество пробелов), используя заполнение.