java - 使用相同的变量打印收据,因此每个项目都会传递相同的值。

标签 java

如何更改我的代码以免发生这种情况?

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 );

How output should look like How my output looks like

最佳答案

传递给 System.out.println 的任何对象都将调用其 toString() 方法。

假设示例代码中的三个 System.out.println 调用预计会输出如下三行

糖果 [2] 成本:9.73 美元 税费:0.68 美元

在您的预期输出中,您应该将注意力集中在 CandyCookieIceCream 类的 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/

相关文章:

java - 2d sprites 中 vbo 的高效使用[opengl/android]

java - 使用 javascript 设置 session 属性

java - 实例化一个类的对象,该类是通过泛型给出的

intellij-idea - 如何将 intellij 32bit xmlx 增加超过 1GB?

java - 关于在下面的应用程序中添加 spring jmx 功能

java - 从数据库中删除 token 的最佳方法

java - 无法获取连接惰性初始化集合

java - 我如何将一个sql查询作为参数传递给java中的另一个sql查询?

Java - 有序映射

java - *Manager 类在某些情况下可以维持其存在吗?