Образец пирамиды на Яве со звездой и подчеркиванием - PullRequest
0 голосов
/ 27 марта 2019

Я хочу напечатать шаблон ниже

*
*_*
*_*_*
*_*_*_*
*_*_*_*_*

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

*
*_*_
*_*_*_
*_*_*_*_
*_*_*_*_*_

int row =5;
String star="*";
String undrscr="_";
String s;
for(int i=1;i<=row;i++)
{//System.out.print(undrscr);
    for(int j=1;j<=i;j++)
    {           
        if(i==1)
        {
        System.out.print(star);
        }
        if(i>1)
        {
            System.out.print(star+""+undrscr);
        if(j==i)
        {
            System.out.print("");
        }
        }
    }

    System.out.println();
}

Ответы [ 5 ]

0 голосов
/ 03 мая 2019

При этом звезды располагаются в порядке возрастания рядов (то есть 1 звезда в первом ряду, затем 2 звезды во втором и т. Д.).

Пошаговая описательная логика для печати прямоугольной звезды с символом подчеркивания .

1) Введите количество строк для печати от пользователя. мы проходим 5 рядов.

2) Чтобы выполнить итерацию по строкам, запустите внешний цикл от 0 до 5 со структурой цикла для (i = 0; i <= 5; i ++). </p>

3) Для итерации по столбцам запустите внутренний цикл от 0 до i со структурой цикла для (j = 0; j <= i; j ++). Внутри петли печать звездочка. </p>

4) В цикле столбца мы проверяем, если i == j, то печатаем только звездочку, в противном случае печатаем звездочку и подчеркивание.

5) После печати всех столбцов строки перейдите к следующей строке, то есть выведите новую строку.

 int i, j;
      for(i=0; i<5; i++)
      {
          for(j=0; j<=i; j++)
          {
             if(i==j)
             {
                 System.out.print("*");
             }
             else
             {
              System.out.print("*");
              System.out.print("_");
             }
          }
          System.out.println();
      }
0 голосов
/ 27 марта 2019

Попробуйте это ..

    int row = 5;
    String star = "*";
    String undrscr = "_";
    String s;
    for (int i = 1; i <= row; i++) {
        for (int j = 1; j <= i; j++) {

            System.out.print(star);
            if (i != j)
                System.out.print(undrscr);
        }

        System.out.println();
    }
0 голосов
/ 27 марта 2019

Измените свой внутренний цикл for на:

for (int i = 1; i <= row; i++) {
    for (int j = 1; j <= i; j++) {
        if (i == 1) {
            System.out.print(star);
        }
        if (i > 1) {
            System.out.print(star);
            if (i - 1 >= j) {              // <-- change made in this if-block only
                System.out.print(undrscr);
            }
            if (j == i) {
                System.out.print("");
            }
        }
    }
    System.out.println();
}

Перед печатью подчеркивание проверьте, является ли i - 1 >= j, потому что согласно вашему требованию количество подчеркиваний равновсегда на 1 меньше, чем звезд .

0 голосов
/ 27 марта 2019

Попробуйте:

//i was the rowNum and the number of stars of that row
for (int rowNum = 0; rowNum<=rows; rowNum++) {
    int numStars = 0;
        while (numStars<rowNum) {
            System.out.print(star+undrscr);
            numStars++;
        }
        System.out.println(star);
    }

Вывод:

*
*_*
*_*_*
*_*_*_*
*_*_*_*_*
*_*_*_*_*_*

РЕДАКТИРОВАТЬ: лучше использовать этот подход, вы получите 5 строк вместо 6.

for (int rowNum = 1; rowNum<=rows; rowNum++) {
    int numStars = 1;
    while (numStars<rowNum) {
        System.out.print(star+undrscr);
        numStars++;
    }
    System.out.println(star);
}
0 голосов
/ 27 марта 2019

Вы можете изменить блок if(i>1){...} на печать undrscr, только если j!=i вот так:

                if(i>1)
            {
                // print only star
                System.out.print(star);
                // print undrscr if j!=i
                if(j!=i)
                {
                    System.out.print(undrscr);
                }
            }

И вы получите шаблон:

*
*_*
*_*_*
*_*_*_*
*_*_*_*_*
...