繁体   English   中英

Java:为多项式类创建toString方法

[英]Java: Creating a toString method for Polynomial class

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。 我在弄清楚代码到底出了什么问题时遇到了麻烦。 任何帮助表示赞赏。

好吧,一个明显的问题-就我所知,您的代码从不添加任何“ +”号...

听起来您必须提交此文件以进行自动化测试-我建议您创建自己的单元测试,以查看在各种情况下会发生什么。 (您可能想从需求中的每个示例开始。)

这样一来,您将能够准确地看到实际输出与预期输出的出问题,而不仅仅是知道失败的“ 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类的工作方式,但是对于tosString的值,其tosString返回什么? 23? 您的测试期望什么? (例如,您的班级处理的精度/准确度是多少,测试期望的水平是什么?)。

也许这对您有帮助

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测试-如果不确定该怎么做,请从测试团队那里获取。 您可以在此处创建数十种不同的方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM