如何在java中的toString()方法中打印新行

时间:2015-03-13 17:39:58

标签: java eclipse-luna

我想在TestBook.java文件中编写System.out.println(b),而不是许多system.out.println行。 那么我应该在Book类的toString()中写什么来返回相同的结果,如下所示

//Title: xxx
//Author:xxx
//Years:xxx
//Pages:xxx
//edition: xxxx
//==================================

public class Book {

String title;
String author;
int yearOfPublishing;
int numberOfPages;
int eddition;

Book ()
{}

Book ( String title, String author, int yop, int nop, int eddition)
{
    this.title = title;
    this.author = author;
    yearOfPublishing = yop;
    numberOfPages = nop;
    this.eddition = eddition;

}

public String toString()
    {
    // return what?? how can i return new lines
    }

}

public class TestBook {

    public static void main(String[] args) {


        Book b = new Book("Data", "Joe", 2015, 276, 3);

        System.out.println ( "Title : " +b.title);
        System.out.println ( "Author : " +b.author);
        System.out.println ( "Year : " +b.yearOfPublishing);
        System.out.println ( "Pages : " +b.numberOfPages);
        System.out.println ( "Eddition : " +b.eddition);

        System.out.println ("==================================");

    }

}

4 个答案:

答案 0 :(得分:1)

您可以使用要格式化的数据内联返回换行符:

return "Title : " + title + "\nAuthor : " + author ...

请注意,这可能是也可能不是解决此问题的最佳方法。

答案 1 :(得分:1)

  • 如果输出将始终在OS X之前的* nix,Windows或Mac上使用,则可以分别使用\n\r\n\r
  • 如果您希望代码与平台无关,并且您将在生成代码的同一平台上使用这些数据,则可以使用String.format("%n")System.getProperty("line.separator")System.lineSeparator()

答案 2 :(得分:0)

这可能是我给过的最短的答案。

Google This:

\n

答案 3 :(得分:0)

对于其他遇到此问题的人,同时可能尝试使用Eclipse的Source菜单项Generate toString()...和模板来做我过去所做的事情。我曾经尝试将此作为模板:
${object.className} [\n${member.name()}=${member.value}, ${otherMembers}]

但是,这导致了以下示例:

@Override
public String toString() {
    return "NEDCustomer [\\nsubscriberType=" + subscriberType + "]";


注意:“ \ n”被替换为“ \ n”,这显然在输出控制台或日志中不起作用,因此我将进行快速搜索并替换为用单个反斜杠替换双反斜杠。
随着新的Eclipse工作区的建立和运行,我终于决定再次做一个快速的google,并找出是否有更好的方法来进行处理,在这种情况下,我发现了这个问题,但是在发现之前,我注意到了一个月食。 tostring templates的组织链接,因此在我提出这些问题的答案后,我回到了该网页,就像编辑模板一样简单:

${object.className} [
    ${member.name()}=${member.value}, 
    ${otherMembers}]


eclipse现在可以正确地生成以下内容(我最终还是添加了一个标签以进行清晰/格式化):

@Override
public String toString() {
    return "NEDCustomer [\n\tsubscriberType=" + subscriberType + "]";


再次,这并不能完全回答OP的问题,因为他们是手动创建toString方法,但是通过使用Eclipse的toString模板可以实现或增强它的方式,可以节省大量时间,尤其是当您有20多个变量时。

希望这对其他人有帮助