Как правильно отформатировать текст с помощью printf () (Java) - PullRequest
3 голосов
/ 27 апреля 2011

Здравствуйте, я хочу напечатать что-то, чтобы они были выровнены.

    for (int i = 0; i < temp.size(); i++) {
        //creatureT += "[" + temp.get(i).getCreatureType() + "]";
        creatureS = "\t" + temp.get(i).getName();
        creatureT = " [" + temp.get(i).getCreatureType() + "]";
        System.out.printf(creatureS + "%15a",creatureT + "\n");
   }

и вывод

    Lily      [Animal]
    Mary         [NPC]
    Peter      [Animal]
    Squash          [PC]

Я просто хочу, чтобы [Animal], [NPC] и [PC] были выровнены как

    Lily      [Animal]
    Mary      [NPC]
    Peter     [Animal]
    Squash    [PC]

Скажем, я знаю, что ни одно имя не будет длиннее 15 символов.

Ответы [ 3 ]

5 голосов
/ 27 апреля 2011

Я думаю, вы обнаружите, что намного проще выполнить все форматирование в самой строке форматирования, то есть

System.out.printf("\t%s [%s]\n", creature.getName(), creature.getCreatureType());

, которая будет печатать

  Lily [Animal]
  etc...

Вы можете проконсультироваться Документация по форматированию строки в точном формате, который используется для печати не менее 15 пробелов для строки для достижения эффекта выравнивания, что-то вроде

System.out.printf("\t%15s[%s]\n", creature.getName(), creature.getCreatureType());

Ключ задает "ширину""из 15 символов для первого элемента в списке аргументов в %15s.

2 голосов
/ 27 апреля 2011

Основная идея заключается в том, что вы описываете формат full в строке формата (первый аргумент) и предоставляете все динамические данные в качестве дополнительных свойств.

Youсмешайте эти два, создав строку формата из динамических данных (кажется, имя существа), что приведет к неожиданным результатам.Сделайте это вместо:

Creature t = temp.get(i);
System.out.printf("\t%15s [%s]\n", t.getname(), t.getCreatureType());
0 голосов
/ 31 июля 2018

форматирование, подобное этому,% 15s делает что-то похожее на текстовый текст. Вы должны написать% -15s, чтобы освободить место для первой строки в 15 графиках. 1-я строка будет выровнена по левому краю, а следующая строка начнется с 16-го графика

Lily           [Animal]
Mary           [NPC]
Peter          [Animal]
Squash         [PC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...