Ваш код выполняет несколько действий, которые не соответствуют вашему примеру.
Во-первых, вы вообще не используете аргументы. Вы сказали, что предполагается, что 6 передается вашему методу main в качестве аргумента, но я вижу только жестко закодированные 6 в вашем коде. Вы должны вызывать args [0] и args [1], чтобы использовать два аргумента.
Во-вторых, ваша логика цикла отключена, если вы хотите получить результат, заданный аргументами, приведенными в примере. Ваш внешний цикл подходит для количества линий, но ваши внутренние циклы не строят отдельные линии точно. Сложность в том, что содержимое каждой строки должно учитывать отношение ширины к высоте.
Вот пример, который должен решить обе проблемы:
public static void main(String[] args) {
int width = Integer.parseInt(args[0]);
int height = Integer.parseInt(args[1]);
for(int i=0; i<height; i++) {
int starsThisLine = (int) Math.round(width * ((i+1) / (double) height));
int dotsBeforeStars = (int) Math.round((width - starsThisLine) / 2.0);
for(int j=0; j<width; j++)
{
if (j < dotsBeforeStars)
System.out.print(".");
} else if (j < dotsBeforeStars + starsThisLine) {
System.out.print("*");
} else {
System.out.print(".");
}
}
System.out.print("\n");
}
}
Обратите внимание, что это может не напечатать результат точно, но должно выглядеть достаточно близко. Если вам это нужно, чтобы быть точным, вам может понадобиться немного настроить отношения.