Поэтому я хочу напечатать этот шаблон:
*******
******
*****
****
***
**
*
Это мой код:
import java.util.*;
public class DO
{
public static void main(String[] args)
{
final int BASE_SIZE = 8;
for (int r = 0; r < BASE_SIZE; r++)
{
for (int c = 0; c < (r + 1); c++)
{
System.out.print("*");
}
System.out.println();
}
}
Как я могу инвертировать шаблон, который я сейчас печатаю, чтобы получить тот, который я вам только что показал?
Я бы выполнил его с помощью StringBuilder
. Начните с самой длинной строки и в цикле вычтите один символ, пока StringBuilder
будет пустым. Что-то вроде
StringBuilder sb = new StringBuilder("*******");
while (sb.length() > 0) {
System.out.println(sb);
sb.setLength(sb.length() - 1);
}
Без изменения внешнего цикла вам нужно только изменить внутренний цикл:
for (int c = BASE_SIZE; c > r; c--)
Так:
for (int r = 0; r < BASE_SIZE; r++)
{
for (int c = BASE_SIZE; c > r; c--)
{
System.out.print("*");
}
System.out.println();
}
for(int c = r ; c > 0 ; c--)
System.out.print("*");
BASE_SIZE
в 7. Некоторые предложения: 1) Найдите лучшее имя для класса, чемDO
. 2) СделатьBASE_SIZE
private static final int
и переместить его на уровень класса. 3) Назовите переменные вашего цикла как-тоrowNumber
иcolumnNumber
чтобы сразу было понятно, что вы пытаетесь сделать. 4) Избавьтесь отjava.util.*
импортаjava.util.*
.