Java для зацикливания результата

Я пишу программу в своем классе Java, и мне нужно напечатать пирамиду звезд. Мой код гласит:

    Scanner sc = new Scanner(System.in);
    System.out.print("Enter a number between 1 and 20: ");
    int value = sc.nextInt();
    System.out.println("Pattern B: ");
    for(int x = 1; x <= value; x++){
      for(int y = value; y>=x; y-- ){
           System.out.print("*");
     }
       System.out.print("\n");

      }

мой результат печатает строку из 5 звезд, затем 4, 3, 2, 1 (если пользователь вводит число 5). То, что я хочу, это чтобы звезды были сдвинуты вправо. Такие как:

линия из 5 звезд, (пробел) линия из 4 звезд, (два пробела) линия из 3 звезд, (три пробела) линия из 2 звезд, (четыре пробела) линия из одной звезды

Имею ли я смысл?

Должен ли я ввести оператор if then, проверить переменную y и увеличить пробел соответственно? Извините, если я вас смущаю.

3 ответа

Решение

Вы могли бы представить новый for Цикл для печати необходимого количества пробелов перед печатью звездочек:

Scanner sc = new Scanner(System.in);
System.out.print("Enter a number between 1 and 20: ");
int value = sc.nextInt();
System.out.println("Pattern B: ");
for(int x = 1; x <= value; x++){
    for(int c = value-x; c<value; c++){
        System.out.print(" ");
    }
    for(int y = value; y>=x; y-- ){
        System.out.print("*");
    }
    System.out.print("\n");
}

Вы можете сделать одну из двух вещей:

  • Ввести другое for петля внутри xfor цикл, который будет цикл x раз, чтобы printx пробелы, ИЛИ
  • Изменить ваш yfor цикл для запуска 1 через valueзатем добавьте if заявление внутри него, чтобы решить, печатать ли пробел или *,

Помните, что если вы хотите настоящую пирамиду, вам придется пропускать каждые 2 числа. Например, если вы выбрали 5 и решили напечатать строку для каждого числа до 0, это лучшее, что вы можете сделать:

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

Хотя, если вы пропустите, вы можете получить что-то вроде этого:

*****
 ***
  *

Теперь все, что вам нужно, это посмотреть, как далеко вы находитесь от своей базы, чтобы получить количество пробелов, разделите это на 2, и у вас есть ваши предыдущие и последующие пробелы.

Вы можете попробовать что-то вроде этого:

    int spacing;

    for(int x = 0; x < value; x=x+2){
          for(int y = value; y>x; y-- ){
               spacing = x/2;

               for(int i = 0; i < spacing; ++i)
                  System.out.print(" ");

               System.out.print("*");

               for(int i = 0; i < spacing; ++i)
                  System.out.print(" ");
           }
           System.out.print("\n");

     }
Другие вопросы по тегам