5

私はこのコードを持っています:

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

これはDayクラスのtoStringメソッドです。

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

何度も呼び出されると、次のように出力されます。

バービー
 月曜日10:X 11:12:2:3:4:
 火曜日10:11:12:2:3:4:X
 水曜日10:11:12:2:3:4:
 木曜日10:11:12:2:3:4:
 金曜日10:11:12:2:3:4:
    ボビ
 月曜日10:11:12:2:3:4:
 火曜日10:11:12:2:3:4:
 水曜日10:11:12:2:3:4:
 木曜日10:11:12:2:X 3:4
 金曜日10:11:12:2:3:4:
    バニー
 月曜日10:11:12:2:3:4:
 火曜日10:11:12:2:3:4:
 水曜日10:11:12:2:3:4:
 木曜日10:11:12:2:3:4:
 金曜日10:11:12:2:3:4:

しかし、私はそれをこのように印刷したいと思います:

バルビ、収入は$95.00です
月曜日10:11:12:X 2:3:4:
火曜日10:11:12:2:3:4:
水曜日10:11:12:2:3:4:
木曜日10:11:12:2:3:4:
金曜日10:11:12:2:3:4:
ボビ、収入は$45.00です
月曜日10:11:12:2:3:4:
火曜日10:11:12:2:3:X 4:
水曜日10:11:12:2:3:4:
木曜日10:11:12:2:3:4:
金曜日10:11:12:2:3:4:
バニー、収入は$ 0.00
月曜日10:11:12:2:3:4:
火曜日10:11:12:2:3:4:
水曜日10:11:12:2:3:4:
木曜日10:11:12:2:3:4:
金曜日10:11:12:2:3:4:

私はこれがJavaのフォーマットされた印刷で機能することを知っています。しかし、私にはそれを行う方法がわかりません。

4

3 に答える 3

4

String.format()幅を受け入れる を使用できます。

私はあなたが変更できると思います:

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

に:

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

そして、欲しいものを手に入れてください。

于 2010-05-13T08:33:37.767 に答える
3

これはのための仕事です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
  • -左揃えのフラグです
  • sString変換です

連結String

ループ内でStringusing を構築してはならないことに注意してください。+=代わりにa を使用する必要がありますStringBuilder

StringBuilder sb = new StringBuilder();
for (Slot slot: slots) {
    sb.append(slot.toString());
}
return sb.toString();

関連する質問

于 2010-05-13T09:25:36.293 に答える
0

java.util.Formatter を確認しましたか? 1.5 btw から利用できます。

于 2010-05-13T08:35:11.897 に答える