如何更改我的代码以免发生这种情况?
NumberFormat formatter =
NumberFormat.getCurrencyInstance();
Candy item1 = new Candy(name, amount, price);
Cookie item2 = new Cookie( "Oatmeal Raisin
Cookies", amount, price );
IceCream item3 = new IceCream( "Vanilla Ice
Cream", amount, price, toppingPrice);
System.out.println( item1 );
System.out.println( item2 );
System.out.println( item3 );
最佳答案
传递给 System.out.println 的任何对象都将调用其 toString()
方法。
假设示例代码中的三个 System.out.println
调用预计会输出如下三行
糖果 [2] 成本:9.73 美元 税费:0.68 美元
在您的预期输出中,您应该将注意力集中在 Candy
、Cookie
和 IceCream
类的 toString()
方法上。这些方法中的每一个都应该按预期返回字符串。
一个更简单、更有针对性的测试用例可能是:
//setup
Cookie myCookie = new Cookie("namevalue", 3, 10.50)
//test
assert myCookie.toString == "COOKIE [3] Cost: $ 10.50 Tax : $0.73"
如果您不熟悉断言或测试开发,也可以像当前一样手动执行断言,但即使不使用 assert
关键字,我的建议还是专注于更小的代码示例,例如上面的示例测试中的代码示例。
请注意,此测试假设硬编码的税率与示例输出中的税率相同。
关于java - 使用相同的变量打印收据,因此每个项目都会传递相同的值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53753587/