Как я могу инвертировать этот шаблон в Java?

1

Поэтому я хочу напечатать этот шаблон:

******* 
****** 
***** 
**** 
*** 
**
*

Это мой код:

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();
  }
 }

Как я могу инвертировать шаблон, который я сейчас печатаю, чтобы получить тот, который я вам только что показал?

  • 0
    Ваш «код до сих пор» не является точной инверсией шаблона, который вы пытаетесь напечатать. Я думаю, что в начале вы пропустили еще одну строку с 8 звездочками, иначе вам нужно установить BASE_SIZE в 7. Некоторые предложения: 1) Найдите лучшее имя для класса, чем DO . 2) Сделать BASE_SIZE private static final int и переместить его на уровень класса. 3) Назовите переменные вашего цикла как-то rowNumber и columnNumber чтобы сразу было понятно, что вы пытаетесь сделать. 4) Избавьтесь от java.util.* импорта java.util.* .
Теги:

3 ответа

5
Лучший ответ

Я бы выполнил его с помощью StringBuilder. Начните с самой длинной строки и в цикле вычтите один символ, пока StringBuilder будет пустым. Что-то вроде

StringBuilder sb = new StringBuilder("*******");
while (sb.length() > 0) {
    System.out.println(sb);
    sb.setLength(sb.length() - 1);
}
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();
    }
0
for(int c = r ; c > 0 ; c--)
    System.out.print("*");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню