Использование вложенных For Loops для создания таблицы чисел и звезд - PullRequest
0 голосов
/ 28 октября 2018

Мне нужно напечатать таблицу, которая выглядит следующим образом, если пользователь ввел 5, используя вложенные циклы:

****5
***45
**345
*2345
12345

Я работал над этим часами, и самое близкое, что у меня было:

int size = scan.nextInt();
    for (int i = 1; i <= size; i++)
      {
         for (int star = size-1; star >= i; star--) 
             System.out.print("*");

         for (int k = 1; k <= i; k++) 
             System.out.print(i);

         System.out.println(); 
         }

Что выводит это:

****1
***12
**123
*1234
12345

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Если вы хотите сохранить свои циклы и избегать операторов if, вы можете настроить последний цикл, изменив

for (int k = 1; k <= i; k++)

на

for (int k = 1+size-i; k <= size; k++)

Кстати, я также считаю, что это легче начатьциклы от 0, поэтому обновленный код будет выглядеть так:

int size = scan.nextInt();
    for (int i = 0; i < size; i++)
    {
        for (int star = size-1; star > i; star--)
            System.out.print("*");

        for (int k = size-i; k <= size; k++)
            System.out.print(k);

        System.out.println();
    }

Надеюсь, это поможет

0 голосов
/ 28 октября 2018

У вас слишком много петель; Мне легче рассуждать о циклах на основе нуля, поэтому я собираюсь использовать это. Выполните итерации i и j от 0 до size. Если j + 1 больше size - i - 1, то мы хотим вывести j + 1. В противном случае мы хотим звезду. Как,

for (int i = 0; i < size; i++) {
    for (int j = 0; j < size; j++) {
        if (j + 1 > size - i - 1) {
            System.out.print(j + 1);
        } else {
            System.out.print('*');
        }
    }
    System.out.println();
}

Для size = 5, который выводит (по запросу)

****5
***45
**345
*2345
12345

Если вы просто должны иметь один основанный индекс, это будет

for (int i = 1; i <= size; i++) {
    for (int j = 1; j <= size; j++) {
        if (j > size - i) {
            System.out.print(j);
        } else {
            System.out.print('*');
        }
    }
    System.out.println();
}
...