Как вывести треугольник символами звёздочки при помощи циклов?
public static void main(String[] args) {
int h = 11; // высота
int w = 14; // ширина
for (int i = 1; i < h + 1; i++) {
if ((i == 1) || i == h) {
System.out.print(" ");
for (int j = 1; j < w - 1; j++) {
System.out.print("–");
}
System.out.print(" ");
System.out.print("\n");
}
else{
System.out.print("|");
for (int j = h; j > i; j--) {
System.out.print(" ");
}
for (int k = 1; k <= i + 1; k++) {
System.out.print("*");
}
System.out.print("|");
System.out.print("\n");
}
}
Получается вот так:
А нужно так:
Ответы (3 шт):
Автор решения: MBo
→ Ссылка
Вот смотрите - ширина внутренней области
iw = w-2
Количество пробелов на строчке i (до и после звёздочек)
sp = min(iw/2, i-2)
Количество звёздочек
st = iw - 2*sp
Автор решения: MarkR
→ Ссылка
Спасибо всем, кто откликнулся, получилось так:
public class Main {
public static void repeat(int amount, String symbol) {
if (amount <=0){
amount = 0;
}
for (int i = 1; i <= amount; i++) {
System.out.print(symbol);
}
}
public static void getPicture(int h, int w) {
for (int i = 0; i < h; i++) {
if ((i == 0) || i == h - 1) {
System.out.print(" ");
repeat(w - 2, "–");
System.out.println(" ");
}
else {
System.out.print("|");
int amountStar = w - i * 2;
int amountSpace = w - 2 - amountStar;
if ((amountSpace >= w) || amountStar == -1) {
amountSpace = w - 3;
repeat(amountSpace, " ");
System.out.println(" |");
}
else{
repeat(amountSpace / 2, " ");
repeat(amountStar, "*");
repeat(amountSpace / 2, " ");
System.out.println("|");
}
}
}
}
public static void main (String[]args){
getPicture(20,17 );
}
}
Автор решения: Zhan Gevorgiz
→ Ссылка
public class Square {
public static void main(String[] args) {
leftTriangle(6);
}
public static void leftTriangle(int x) {
for (int i = 0 ; i < x ; i++) {
for (int j =x; j > i; j--) {
System.out.print("*");
}
System.out.println(" ");
}
}
}

