Я добавил несколько вещей в ваш код и заставил его напечатать полный треугольник, где число, введенное в сканер, будет количеством звездочек, напечатанных в нижнем ряду.Т.е. если на входе 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.
Надеюсь, это поможет =)