Как вывести треугольник символами звёздочки при помощи циклов?

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(" ");
        }
    }
}
→ Ссылка