Formatted Printing in Java

I have this code:

public String toString(Day day)
{
    String s = day.getDayName() + "    " + day.toString();
    return s;
}

This is the day method for toString:

public String toString()
{
    String s = "";
    for (Slot slot: slots)
        s += slot.toString();
    return s;
}

When called again and again, it prints:

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:

However, I would like to print it as follows:

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. , .

+5
3

String.format(), .

, :

String s = day.getDayName() + "    " + day.toString();

return String.format("%9s %s", day.getDayName(), day.toString());

, .

+4

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

+3

Have you checked java.util.Formatter? It is available with 1.5 bits.

0
source

All Articles