У меня есть этот код:
public String toString(Day day)
{
String s = day.getDayName() + " " + day.toString();
return s;
}
Это - toString метод класса Дня:
public String toString()
{
String s = "";
for (Slot slot: slots)
s += slot.toString();
return s;
}
При вызывании и снова это печатает:
barbi monday 10: X 11: 12: 2: 3: 4: tuesday 10: 11: 12: 2: 3: 4: X wednesday 10: 11: 12: 2: 3: 4: thursday 10: 11: 12: 2: 3: 4: friday 10: 11: 12: 2: 3: 4: bobbi monday 10: 11: 12: 2: 3: 4: tuesday 10: 11: 12: 2: 3: 4: wednesday 10: 11: 12: 2: 3: 4: thursday 10: 11: 12: 2: X 3: 4: friday 10: 11: 12: 2: 3: 4: bunny monday 10: 11: 12: 2: 3: 4: tuesday 10: 11: 12: 2: 3: 4: wednesday 10: 11: 12: 2: 3: 4: thursday 10: 11: 12: 2: 3: 4: friday 10: 11: 12: 2: 3: 4:
Однако я хотел бы распечатать его этот путь:
barbi, income is $95.00 Monday 10: 11: 12: X 2: 3: 4: Tuesday 10: 11: 12: 2: 3: 4: Wednesday 10: 11: 12: 2: 3: 4: Thursday 10: 11: 12: 2: 3: 4: Friday 10: 11: 12: 2: 3: 4: bobbi, income is $45.00 Monday 10: 11: 12: 2: 3: 4: Tuesday 10: 11: 12: 2: 3: X 4: Wednesday 10: 11: 12: 2: 3: 4: Thursday 10: 11: 12: 2: 3: 4: Friday 10: 11: 12: 2: 3: 4: bunny, income is $0.00 Monday 10: 11: 12: 2: 3: 4: Tuesday 10: 11: 12: 2: 3: 4: Wednesday 10: 11: 12: 2: 3: 4: Thursday 10: 11: 12: 2: 3: 4: Friday 10: 11: 12: 2: 3: 4:
Я знаю, что это работает с отформатированной печатью в Java. Но у меня нет подсказки, как сделать это.
Это задание для java.util.Formatter
String[][] kvs = {
{ "Name", "Johnny" },
{ "Age", "19" },
{ "Sex", "Female" },
};
for (String[] kv : kvs) {
System.out.println(
String.format("%-10s:%10s", kv[0], kv[1])
);
}
Это выводит:
Name : Johnny
Age : 19
Sex : Female
%[flags][width]conversion
-
- это флаг для выравнивания по левому краю s
- это String
преобразование String
конкатенация Обратите внимание, что вы никогда не должны строить String
, используя + =
в цикле. Вместо этого следует использовать StringBuilder
.
StringBuilder sb = new StringBuilder();
for (Slot slot: slots) {
sb.append(slot.toString());
}
return sb.toString();
Вы могли бы использовать String.format()
, который будет принимать ширину.
Я думаю, вы можете изменить:
String s = day.getDayName() + " " + day.toString();
на:
return String.format("%9s %s", day.getDayName(), day.toString());
и получить то, что вы хотите.
Вы проверили java.util.Formatter? Он доступен начиная с версии 1.5.