【问题标题】:Print writer format打印写入器格式
【发布时间】:2023-03-20 06:35:01
【问题描述】:

我有一个包含多个对象的列表,每个对象都包含三个strings,我应该如何格式化输出(outfile.format())以使其看起来像下面的示例输出?

public void save() {
        try {

            PrintWriter outfile = new PrintWriter
                             (new BufferedWriter
                             (new FileWriter("reg_out.txt")));

        for (int i = 0; i < list.size(); i++)
        { 
            outfile.format("???", list.get(i).getLastName(),
                                        list.get(i).getFirstName(),
                                        list.get(i).getNumber());
        }

            outfile.close();

        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

    }

reg_out.txt 中的示例输出:

Allegrettho     Albert          0111-27543
Brio            Britta          0113-45771
Cresendo        Crister         0111-27440

【问题讨论】:

    标签: java format printwriter


    【解决方案1】:

    试试这个

    outfile.printf("%-20s%-20s%-20s%n", list.get(i).getLastName(),
                                            list.get(i).getFirstName(),
                                            list.get(i).getNumber());
    

    详见 java.util.Formatter API

    【讨论】:

    • 数字后面不能有空格,后面应该有新行。 getNumber 是否有可能返回一个带有尾部空格的字符串?
    • 你说得对,我不知道发生了什么,没有空格。