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
петля внутриx
for
цикл, который будет циклx
раз, чтобыprint
x
пробелы, ИЛИ - Изменить ваш
y
for
цикл для запуска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");
}