Как использовать три вложенных цикла for в Java для инвертированной пирамиды с _? - PullRequest
0 голосов
/ 19 апреля 2019

У меня проблемы с попыткой выяснить, как создать пирамиду с тремя вложенными циклами с помощью сканера.

Мне нужно добиться этого

Enter a number
6
1 2 3 4 5 6 

- 1 2 3 4 5 

- - 1 2 3 4

- - - 1 2 3

- - - - 1 2

- - - - - 1

Я в основном пыталсяэто, я знаю, что это неправильно, но я знаю, что я должен делать, и я не уверен, как это написать.

Scanner ent= new Scanner(System.in);
System.out.println("Enter a number");
int x= ent.nextInt();


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

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Разделите этот шаблон на две части.

  1. черточки
  2. Числа от 1 до n

Сначала подсчитайте, сколько раз вам нужно напечатать этот шаблон. Здесь 6 раз.

    int n=in.nextInt();
    for(int i=1;i<=n;i++)
    {

    }

За каждый раз, когда вам нужно печатать тире, а затем цифры.

  1. Даш

    ------------
    Row | Dashes
    ------------
     1  |  0
     2  |  1
     3  |  2
     4  |  3
     5  |  4
     6  |  5
    

Итак, я ввожу переменную тире = 0 и увеличиваю тире для каждой строки.

    int n=in.nextInt();     
    int dashes=0;

    for(int i=1;i<=n;i++)
    {
        for(int j=1; j<=dashes;j++)
            System.out.print("-");
        dashes++;
    }
  1. Числа начинаются с 1 и заканчиваются (n-i + 1)

    ------------
    Row | Numbers (n-i+1)
    ------------
     1  |  123456 
     2  |  12345
     3  |  1234
     4  |  123
     5  |  12
     6  |  1
    

Итак, окончательный код

    int n=in.nextInt();

    int dashes=0;

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

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

        // for next row - starts in new line
        System.out.println();
        dashes++;
    }
0 голосов
/ 19 апреля 2019

Вот один из способов:

System.out.println("Enter a number");
int x = ent.nextInt();

for (int i=0; i < x; ++i) {
    for (int j=0; j < i; ++j) System.out.print("- ");
    for (int j=1; j <= (x-i); ++j) {
        if (j > 1) System.out.print(" ");
        System.out.print(j);
    }
    System.out.println();
}

1 2 3 4 5 6
- 1 2 3 4 5
- - 1 2 3 4
- - - 1 2 3
- - - - 1 2
- - - - - 1

Логика состоит в том, чтобы использовать два отдельных внутренних цикла, один для тире, которые идут первым, а другой для чисел. Цикл для тире проходит от 0 до i-1, то есть на одну позицию перед внешним циклом. Затем для остальной части строки мы печатаем числа от 1 до x - i.

...