Во-первых, инициализируйте k с остальными переменными.
int i, j, k;
Затем вы должны решить, какой цикл for будет отвечать за один напечатанный символ '*', и соответственно настроить другой. Например, если вы прервете первый цикл на 1 шаг раньше, это должно исправить разрыв между двумя частями.
Теперь я оставляю один '*' для первого цикла for и пропускаю его во втором, изменяя шаги.
- Инициализация k = 2 вместо k = 0. Исправление одиночного * повторения вместе с пробелом между ними.
- полностью удалил цикл for, который использовал j в качестве счетчика, потому что он искажал пробел в выводе, печатая нежелательные * дальше.
наконец добавил System.out.println()
перед вторым циклом for, чтобы *, напечатанный вторым циклом for, начинался с новой строки.
import java.util.*;
import java.lang.*;
class Rextester
{
public static void main(String args[])
{
for (int i=1;i <= 3; i++) {
System.out.println();
for (int k=3; k >= i; k--) {
System.out.print(" " + "*" + " ");
}
}
System.out.println();
for (int k=2; k <= 3; k++) {
for (int l=0; l < k; l++) {
System.out.print(" "+"*"+" ");
}
System.out.println();
}
}
}
В конечном счете, эту проблему можно решить, повозившись с вашими цифрами, или путем решения проблем с ручкой и бумагой, прежде чем даже писать код.