Я практикуя базовые упражнения кодирования и пытаюсь напечатать следующий треугольник в Java:Печать треугольника в Java
*
***
*****
***
*
Следующий код дает мне результаты, но я чувствую, что должно быть гораздо более изящным раствор
for (int i = 1; i <= 5; i++) {
if (i % 2 == 1) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println("");
}
}
for (int i = 3; i > 0; i--) {
if (i % 2 == 1) {
for (int j = 1; j < i + 1; j++) {
System.out.print("*");
}
System.out.println("");
}
}
Может ли кто-нибудь дать представление о том, как сделать эту работу лучше?
Хорошо, вот еще какой-то код, который производит правильный результат, который использует только два для петель, но это выглядит еще уродливее:
for (int i = 1; i <= 10; i += 2) {
if (i <= 5) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println("");
}
else if(i > 5 && i < 8){
for(int j = i/2; j > 0; j--){
System.out.print("*");
}
System.out.println("");
}
else{
for(int j = 1; j > 0; j--){
System.out.print("*");
}
System.out.println("");
}
}
Спасибо, я + = 2 и i- = 2 делает намного больше смысла.Я все еще немного застрял, просто держа его до двух петель. Будет ли уравнение включать оператор if во внутреннем j-цикле на основе значения i? – user3029486
Да, если вы хотите сохранить его читаемым. Элегантность не подразумевает делать все в одной строке, но повторения следует избегать. Вот почему я предложил объединить оба цикла в один, но с использованием if, если внутри хорошо. – fpw
Хорошо, я только что обновил вопрос своим альтернативным кодом. , но это выглядит довольно уродливо. Надеюсь, что есть намного лучший способ. – user3029486