Ответ Джона Мартинеса работает отлично, но он немного неэффективен. Я поставлю шаг за шагом ваш код, который я обновил:
public class Main {
public static void main(String[] args) {
//Both Squares
StringBuilder filledLine = new StringBuilder(10);
StringBuilder hollowLine = new StringBuilder(10);
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 10; j++) {
filledLine.append("*");
if (i == 1 || i == 5 || j == 1 || j == 10) {
hollowLine.append("*");
} else {
hollowLine.append(" ");
}
}
System.out.println(filledLine + " " + hollowLine);
filledLine.delete(0, filledLine.length());
hollowLine.delete(0, hollowLine.length());
}
}
}
Шаг 1: конвертируйте две петли в одну петлю. Это потому, что вы не можете печатать на одной и той же строке после создания новой строки.
Шаг 2: Поскольку мы будем использовать строки в цикле, более эффективно использовать StringBuffer
, поэтому мы не будем постоянно создавать новые строки
Шаг 3: Записать весь вывод вашей логики в буферы вместо консоли.
Шаг 4. Напечатайте буферы по одной строке за раз, когда мы их заполним.
Шаг 5: Прибыль!