Распечатать рисунок пирамиды n раз друг под другом - PullRequest
0 голосов
/ 19 февраля 2019

Я знаю, как напечатать рисунок пирамиды, но я хочу напечатать их друг под другом n раз.Я пытался решить это с помощью цикла for, но вывод не то, что я хотел.Первый рисунок пирамиды хорош, но остальные ошибаются.Пробовал с треугольником, и это дает правильный вывод.В чем разница между двумя шаблонами?Программа на Java

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int height;
        int stars =1;
        int level;
        System.out.println("Pyramid pattern.");
        System.out.print("Please give the height: ");
        height = sc.nextInt();
        System.out.print("How many times to print: ");
        level = sc.nextInt();
        int szelesseg = magassag - 1;
        if (magassag <= 0) {
            System.out.println("A magasságnak pozitívnak kell lennie.");
        }
        else
        {
            for (int h = 0; h < szintek; h++) {
            for (int i = 0; i < magassag; i++){
            for (int j = szelesseg; j>i; j-- )
            {
                System.out.print(" ");
            }
            for (int k = 0; k < stars; k++){
                System.out.print("*");
            }
            stars += 2;
            System.out.println();
            }
            }
        }
    }
}

1 Ответ

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

Кажется, проблема в том, что число звезд увеличивается на два для каждой строки, напечатанной в цикле for, но никогда не сбрасывается, поэтому начинается второй треугольник, намного больший 1. Самое простое решение - простоустановите его равным 1 в начале самого внешнего цикла for.Вот что я использовал:

        for (int h = 0; h < level; h++) {
            stars = 1;    
            for (int i = 0; i < height; i++){
                for (int j = szelesseg; j>i; j-- ) {
                    System.out.print(" ");
                }
                for (int k = 0; k < stars; k++){
                    System.out.print("*");
                }
                stars += 2;
                System.out.println();
           }
       }

Какие выходные данные:

  *
 ***
*****
  *
 ***
*****
  *
 ***
*****

Я перевел некоторые имена переменных на английский, потому что они, казалось, были объявлены на английском языке, но ссылались на венгерском (возможно,это был только мой браузер, пытающийся перевести).Я также жестко закодировал значения в 3, потому что мне не хотелось иметь дело со сканером в онлайн-компиляторе.Надеюсь, это поможет!

Редактировать: чтобы помочь остановить программу, если неверное число / -1

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int height;
    int stars =1;
    int level;
    System.out.println("Pyramid pattern.");
    System.out.print("Please give the height: ");
    height = sc.nextInt();
    if (height > 0) {
        System.out.print("How many times to print: ");
        level = sc.nextInt();
        int szelesseg = magassag - 1;
    //Rest of handling code goes here
    }
    else {
        System.out.println("A magasságnak pozitívnak kell lennie.");
    }

Здесь проверка на -1 происходит сразу после получения ввода.Остальная часть логики помещается в успешный случай, это означает, что это произойдет, только если входное значение больше 0. В другом случае появляется сообщение об ошибке.Это означает, что он будет печататься, как только первый вход не удастся или произойдет другая ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...