Новичок в Java - Управление выводом - Генерация Asterix - PullRequest
1 голос
/ 08 февраля 2012

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

Это то, что у меня уже есть.

public class 12345 {
    public static void main(String[] args) {
        int n = 0;
        int spaces = n;
        int ast;

        System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *");

        Scanner keyboard = new Scanner(System.in);
        n = keyboard.nextInt();

        for (int i = 0; i < n; i++) {
            ast = 2 * i + 1;

            for (int j = 1; j <= spaces + ast; j++) {
                if (j <= spaces)
                    System.out.print(' ');
                else
                    System.out.print('*');
            }

            System.out.println();
            spaces--;
        }
    }
}

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

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Попробуйте переместить

int spaces = n;

к ПОСЛЕ того, как значение n будет считано из стандартного ввода.

Это решит половину вашей проблемы и, надеюсь, приведет вас на правильный путь.

0 голосов
/ 05 октября 2012

Я добавил несколько вещей в ваш код и заставил его напечатать полный треугольник, где число, введенное в сканер, будет количеством звездочек, напечатанных в нижнем ряду.Т.е. если на входе 3, треугольник будет двумя строками 1-> 3;если введено 5, то треугольник будет 3 рядами 1-> 3-> 5 и т. д.

    public static void main(String[] args) {
        int ast;
        int reverse = 1;

        System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *");

        Scanner keyboard = new Scanner(System.in);
        int spaces = keyboard.nextInt();


        for (int i = 0; i < spaces; i++) {
            ast = 2 * i + 1;

            for (int j = 1; j <= spaces + ast; j++) {
                if (j <= spaces) {
                    System.out.print(' ');
                } else {
                    System.out.print('*');}
                if (j > spaces + ast) {
                    for (int k = 0; k < spaces-(reverse-1); k++) {
                        System.out.print(' ');
                    }
                }
                int k = 0;
                reverse++;

            }

            System.out.println();
            spaces--;
        }
    }
}

Я добавил еще один оператор if после вашего if-else, который срабатывает, когда переменная jпревышает условие первого цикла.Это запускает другой цикл, который делает выходные строки симметричными, фактически повторяя ваш первый оператор if.

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

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