我已经重写了类Object的toString
方法,但我的工作不正常,我找不出原因。这里是我的方法的代码(在一个名为ShoppingBag
类):我可以不做System.out.println(Item.toString());?
public String toString(){
String str = "";
Item temp = record;
str += "\n\nThe bag contains:\n";
str += String.format("%-18s%-13s%-12s\n", "Name of the Items", "Quantity", "Subtotal");
while(temp != null){
str += String.format("%-18s%-13s%-12s\n", temp.getItemName(), temp.getQuantity(),
"$"+(temp.getRetailPrice()*temp.getQuantity()));
}
str += String.format("%-18s%-13s%-12s\n", "", "Total:", "$"+this.totalCost());
str += String.format("%-18s%-13s%-12s\n", "", "Tax(5%):", "$"+(this.totalCost()
* taxRate));
str += String.format("%-18s%-13s%-12s\n", "", "Grand Total:", "$"+this.totalCost()
+(this.totalCost()*taxRate));
String test = "test1";
return test;
}
我知道,那里面有很多垃圾的一类项目和的String.format。编译或运行时没有例外,它只是不打印任何东西。
在我的申请,我试试这个:
ShoppingBag bag = new ShoppingBag(parameters);
System.out.println(bag.toString());
并没有什么打印。当我注释掉除了我的方法的最后两行(String test = "test1"; return test;
)以外的所有内容时,它会打印“test1”,但其他文本块不应该影响测试变量,所以我不明白为什么它不会打印。
什么时候'临时'有空'? –
你滥用'toString()'。该方法主要供开发人员在调试时使用。这不是将购物袋的内容打印给用户。为此,您应该有一个'print'方法,它将'PrintWriter'作为参数。这样编写者可以将输出直接传输到目标(文件或网络客户端)。 'toString()'方法应该简洁明了,只需要足够的摘要信息来在调试时区分多个行李。 – Andreas
总是显示不起作用的代码。我们如何知道你实际上在你的非功能代码中返回'str'?你会惊讶这种愚蠢的错误发生的频率。 –