Изменение порядка отображения чисел во вложенном цикле - PullRequest
1 голос
/ 25 октября 2019

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

   1
  12
 123
1234

, и я хочу получить значение

   1
  21
 321
4321

Вот код, с которым я играл некоторое время.

Scanner stdIn = new Scanner (System.in);
int n;

do
{
    System.out.println("Please enter the value number: ");
    n = stdIn.nextInt();
}
while  ( n < 1 || n > 9);
for (int i = 1; i <= n; i++)
{
     for (int k = i; k < n ; k++)  
    {
        System.out.print(" ");
    } 
    for (int j = 1; j <= i; j++)  
    {
        System.out.print(j);
    }
    System.out.println(); 
}

stdIn.close();

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Один простой способ - заставить второй цикл for начинать с i и понижать до 1:

for (int j = i; j >= 1; j--)
{
    System.out.print(j);
}

В качестве альтернативы выведите i - j + 1:

for (int j = 1; j <= i; j++)
{
    System.out.print(i - j + 1);
}

Кроме того, вам не следует закрывать Scanner, который "связан с" System.in Вы не открыли System.in, поэтому не закрывайте его.

0 голосов
/ 25 октября 2019

Вы можете преобразовать числа в строку и напечатать ее наоборот:

Scanner stdIn = new Scanner (System.in);
int n;
String str;
do
{
    System.out.println("Please enter the value number: ");
    n = stdIn.nextInt();
}
while  ( n < 1 || n > 9);
for (int i = 1; i <= n; i++)
{
     str = "";
     for (int k = i; k < n ; k++)  
    {
        System.out.print(" ");
    } 
    for (int j = 1; j <= i; j++)  
    {
        str = str + j;
    }
    System.out.println(new StringBuffer(str).reverse().toString()); 
}

stdIn.close();
...