Кажется, проблема в том, что число звезд увеличивается на два для каждой строки, напечатанной в цикле 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. В другом случае появляется сообщение об ошибке.Это означает, что он будет печататься, как только первый вход не удастся или произойдет другая ошибка.