【发布时间】:2020-10-07 22:54:32
【问题描述】:
我有一个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;
}
【问题讨论】:
-
看起来你的班级有一个项目列表,你的 toString 将它们连接在一起。您可以这样做,但更传统的方法是让每个 Order 对象返回一个较小的 toString,然后通过迭代在外部打印它们。可能会返回一个订单列表。
-
Price: $"Price in double" - 货币不应使用
float或double表示。
标签: java formatting format newline tostring