Java:为Polynomial类创建toString方法

public String toString(){ String mytoString=""; if(!a.equals(0)){ mytoString = a.toString() + "x^2"; } if(!b.equals(0)){ mytoString += b.toString() + "x"; } if(!c.equals(0)){ mytoString += c.toString(); } return mytoString; } 

这是我的代码。 该项目的发布测试表明我没有使用StringPositive。 我无法弄清楚我的代码到底出了什么问题。 任何帮助表示赞赏。

好吧,一个明显的问题 – 就我所见,你的代码永远不会添加任何“+”符号……

听起来你必须提交这个以进行自动化测试 – 我建议你创建自己的unit testing,看看在各种情况下会发生什么。 (您可能希望从需求中的每个示例开始。)

通过这种方式,您可以确切地看到实际输出与预期输出相比有什么问题,而不仅仅是知道它已经失败的“toStringPositive”。

好吧,第一件事就是跳出来对我来说:对于积极的条款,没有任何东西可以创造将它们与表达的其余部分联系起来的“+”符号。

我认为测试这个问题的最佳方法是在函数中输入一堆不同的测试输入,看看出来的是否符合规范。

一个明显的问题是你永远不会在你的字符串中包含任何加号,这很可能会失败很多测试。

你忘记了+或 – 。

是的,没有+-符号。 你应该测试你的方法的简单,常见的a,b,c值,从1,2,3开始,比较复杂的值,如(0,1,1),(0,0,0)和(1,0, 0)和(-1,-2,-3)到火箭科学:(0,-1,-0.0)。

乍一看:

  1. 对于积极的条款,我不认为你在条款之间添加“+”。
  2. 如果所有条件都为零,则应返回“0”,但返回“”。
  3. 不确定这是否会使测试失效,但当系数为1时,对于a和b,输出应该类似于“x”或“x ^ 2”而不是“1x”或“1x ^ 2”。
  4. 不确定你的MyDouble类是如何工作的,但是对于像23.000000001这样的值,它的tosString返回什么? 23? 您的测试期望什么? (即您的class级处理的精度/准确度达到什么水平以及测试所期望的水平?)。

也许这有助于你

 public String toString(){ String mytoString=""; if(!a.equals(0)){ mytoString = a.toString() + "x^2"; } if(!b.equals(0)){ if (b > 0) mytoString += "+"; mytoString += b.toString() + "x"; } if(!c.equals(0)){ if (c > 0) mytoString += "+"; mytoString += c.toString(); } return mytoString; } 

你应该注意添加正数的符号

您的计划无法满足的一项要求:

如果所有3个系数都是0,则字符串应为“0”

并且如上所述,您不会在条款中附加加号或减号。

您不要在任何系数上添加符号。

因此,例如,如果你的输入是: {a=1, b=2, c=3} ,你的输出将是: 1x^22x3 ,而不是预期的1x^2+2x+3

更不用说当{a=0, b=0, c=0}时你有一个错误,你返回""而不是0

编写一些JUnit测试 – 如果您不确定该怎么做,请从测试团队中获取它们。 您可以在此处创建几个不同的方案。