Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么不是';这不管用吗?(a.getNumer()和this.getNumer()返回相同的值)_Java - Fatal编程技术网

Java 为什么不是';这不管用吗?(a.getNumer()和this.getNumer()返回相同的值)

Java 为什么不是';这不管用吗?(a.getNumer()和this.getNumer()返回相同的值),java,Java,嘿,我在一个cs班,最近我得到了一个小实验室,在大多数情况下都很简单。但最后一部分把我搞砸了,我的代码是: public Rational add(Rational a) { Rational addRational = new Rational(a.getNumer() * this.getDenom() + this.getNumer() * a.getDenom(), a.getDenom() * this.getDenom());

嘿,我在一个cs班,最近我得到了一个小实验室,在大多数情况下都很简单。但最后一部分把我搞砸了,我的代码是:

    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());
   }
@测试
公共void testL6Add(){
随机rnd=新随机(7);
理性理性价值观;
理性理性价值b;
理性主义者;
int v1、v2、v3、v4;

对于(int i=0;i类
Rational
中的
numer
denom
字段被声明为静态。这意味着该类的所有实例都使用相同的内存位置。因此,第二个实例覆盖了第一个实例的值。

在此处发布代码,而不是在pastebin。发布创建实例的方式调用add方法。有什么理由不应该这样做吗?@cagirici不应该这样做。getNumer()获取我的理性值A。getNumer()不是理性值B.getNumer()的替代品?如果不是,我如何得到它?不能保证随机方法总是返回不同的值。这一定是为什么有时会得到这个,getNumber和a.getNumber相同的原因