首页 > 解决方案 > 如何用“\n”格式化 toString() 方法?

问题描述

我有一个toString()方法,它返回有关在线订购的信息。这将返回此人的姓名、此人购物的品牌、他们购买的商品的价格、总价以及是否有货。

我的标准是根据有多少人订购以下内容的多个输出:

Amazon: Order #1001
Customer: "Name"
Brand: "Seller"
Price: $"Price in double"
"Name of item"
Total Price: $"Price in double"

我希望如果该人什么都不订购,“项目名称”部分会消失并且不包括"\n".

输出示例:

Amazon: Order #1002
Customer: Jane Doe
\nBrand: Nike
Price: $0.0
Total Price: $0.0

Amazon: Order #1001
Customer: Jane Doe
Brand: Nike
Price: $94.04
Nike Air Max 97
Total Price: $94.04

Amazon: Order #1001
Customer: Jane Doe
Brand: Nike
Price: $86.90
Nike Revolution 5
Total Price: $180.94

我的输出按以下方式执行所有操作,除了当该人没有订购任何东西时它会创建一个新行。您可以在下面看到第一个订单在价格和总价之间有一个空格。

我的输出:

Amazon: Order #1002
Customer: Jane Doe
Brand: Nike
Price: $0.0

Total Price: $0.0

Amazon: Order #1001
Customer: Jane Doe
Brand: Nike
Price: $94.04
Nike Air Max 97
Total Price: $94.04

Amazon: Order #1001
Customer: Jane Doe
Brand: Nike
Price: $86.90
Nike Revolution 5
Total Price: $180.94

这是我的toString()方法:

public String toString() {
    String item = "";
    for(int i = 0; i < size; i++) {
        s += s[i];
        if(i < currentNumOrders - 1) {
            item += "\n";
        }
    }  

    return app + ": Order #" + number + "\nCustomer: " + 
           name + "\nBrand: " + brand + "\nPrice: $" + 
           price + "\n" + item + "Total Price: $" + sum;       
}

标签: javaformattingformatnewlinetostring

解决方案


您可以使用三元条件\n仅在必要时显示:

return app + ": Order #" + number + "\nCustomer: " + 
           name + "\nBrand: " + brand + "\nPrice: $" + 
           price + "\n" + (item.length() > 0 ? item + "\n" : "") + "Total Price: $" + sum;  

推荐阅读