如何重写一个实例变量和一个局部变量的方法,它产生一个新的数据类型变量Double?

时间:2016-11-13 20:48:24

标签: java scope refactoring

对于我的任务,我被要求创建两种方法。这两种方法称为" addx()"和" testParsing()"。这两种方法的目的如下

addx()方法

  • 使用实例变量名称计算12 + 5" x"和一个名为" x"的局部变量。 (作业涉及范围)
  • 执行添加的方法应该通过参数x。
  • 添加实例变量x
  • 返回一个新的Double()。

testParsing()方法

  • 测试x(" 12 + 5")返回值为17的Double

我现在已经完成了addx()和testParsing()方法,但结果是相同的。到目前为止我的方式看起来很像:

public Double addx(double x)
    {
            System.out.println("== Adding ==");
            this.x = x;
            return new Double(x + 5);
    }
public void testParsing()
    {
if (addx(12.00) == 17.0) {
        System.out.println("Adding Success");
    } else {
        System.out.println("Adding Fail");
    }
    }

正如您所看到的,我没有将实例变量和局部变量添加到一起。我已经将实例变量定义为在其上添加5的局部变量ad,这不是所要求的。我正在寻找一种方法来重写这个,以便addx方法add()方法添加应该等于12的实例变量和应该等于5的局部变量一起等于17并返回一个新值类型为Double(我不确定为什么它是类型对象Double而不是原始的double,但那是指示的内容。

这是我尝试正确重写方法:

 public Double addx(double x) {
      System.out.println("== Adding ==");
      this.x = 12.00;
      x = 5.00;
      return new Double();//how do I make the value be stored in this Double()?
}

public void testParsing()
{
if (addx("12 + 5") == "17.0")//error string cannot be converted to double?
{
     System.out.println("Adding Success");}
else {
     System.out.println("Adding Fail");
}
}

我知道这种尝试没有意义,但我仍然坚持如何解决它。

所以澄清一下:

  • 我想让addx()将实例变量x添加到参数x。
  • testParsing()应测试(" 12 + 5")是否加起来为17。

感谢。

1 个答案:

答案 0 :(得分:0)

<强> addx()

public Double addx(double x)
{
        System.out.println("== Multiplying ==");
        this.x = x;
        return new Double(x + 5);
}

这里几件事:

  1. 您的sysout声明表明您认为自己正在乘以数字。你不是 - 你要添加两个数字并返回结果。
  2. this.x = x; - 我不确定你要完成什么。你实际上是在覆盖实例变量&#39; x&#39;的价值。使用本地变量的值&#39; x&#39;。
  3. 为什么要在将x添加到x?
  4. 的地方返回双精度数

    如果没有给你答案,这里有几点需要解释。在方法addx()中,x引用局部变量。因此,如果使用addx(10);调用方法,x等于10.要引用实例变量,必须使用this.x。因此,如果您的实例变量等于1,并且您调用addx(10);,则您希望返回值为11.0。如果知道在方法体内,x10this.x1,您如何才能实现这一结果?

    <强> testParsing()

    此方法的目的是为addx()方法创建单元测试。它希望您测试该代码。因此,您的一个变量必须是12,另一个必须是5。您可以执行以下操作:

    • 5分配给您的实例变量x;
    • 使用参数addx();
    • 致电12
    • addx()的返回值分配给Double;
    • 验证双精度等于17.0

    例如,可以使用断言或抛出AssertionError来完成验证。教师是否提供了有关如何进行验证的更多详细信息?