gpt4 book ai didi

java - 为什么这不起作用? (a.getNumer() 和 this.getNumer() 返回相同的值)

转载 作者:行者123 更新时间:2023-12-01 12:23:15 25 4
gpt4 key购买 nike

嘿,我正在上计算机科学课,最近我得到了一个小型实验室,其中大部分都非常简单。但最后一部分让我很困惑,我的代码是:

    public Rational add(Rational a) {
Rational addRational = new Rational(a.getNumer() * this.getDenom() + this.getNumer() * a.getDenom(), a.getDenom() * this.getDenom());
return addRational;
}

由于某种原因,a.getNumer() 和 this.getNumer() 返回相同的数字(a.getDenom() 和 this.getDenom() 也是如此)。我应该修复什么,为什么会损坏?

以防万一它有帮助,这是测试失败的部分:

    @Test
public void testL6Add() {
Random rnd = new Random(7);

Rational rationalValueA;
Rational rationalValueB;
Rational rationalAnswer;

int v1, v2, v3, v4;
for (int i=0; i<1000; i++) {
v1 = rnd.nextInt(500);
v2 = rnd.nextInt(500);
v3 = rnd.nextInt(500);
v4 = rnd.nextInt(500);
rationalValueA = new Rational(v1, v2);
rationalValueB = new Rational(v3, v4);
rationalAnswer = rationalValueA.add(rationalValueB);
assertEquals("Trying " + rationalValueA + " plus " + rationalValueB,
v1*v4 + v2*v3, rationalAnswer.getNumer());
assertEquals("Trying " + rationalValueA + " plus " + rationalValueB,
v2 * v4, rationalAnswer.getDenom());
}

我知道(或者至少认为)问题是 a.getNumer() 返回与 this.getNumer() 相同的值,因为我让它输出(使用 System.out.print)每个值并在测试中v1 和 v2 正在被创建,但是当它执行rational1.addRationa(rational2)时,它只是将rational2添加到自身

最佳答案

Rational 类中的字段 numerdenom 被声明为静态。这意味着该类的所有实例都使用相同的内存位置。因此,第二个实例覆盖了第一个实例的值。

关于java - 为什么这不起作用? (a.getNumer() 和 this.getNumer() 返回相同的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com