MOOC赫尔辛基第10周练习28个奇怪的测试结果

时间:2017-12-01 09:25:52

标签: java

简短版本:

为什么这段代码:

@Override
public String toString() {
    String result = "";
    for (Movable i : this.allObjects) {
        result += i.toString();
        result +='\n';
    }
    return result;
}

虽然在我的控制台上没有产生结果,但是通过自动测试接受了,而这个:

@Override
public String toString() {
    for (Movable i : this.allObjects) {
        System.out.println(i.toString());
    }
    return "";
}

在我的控制台上打印测试结果,而根据相同的测试不打印任何内容?

长版:

我用赫尔辛基大学创建的MOOC学习Java,我对其中一个练习的结果感到非常惊讶。它在这里:

http://mooc.cs.helsinki.fi/programming-part2/material/week-10?noredirect=1

第28页。它是关于对象多态性的非常直接和简单的练习,我写了一个代码,它始终在控制台中给出预期的结果。但是这里抓住了。我无法通过测试。我收到的错误看起来像是无法打印结果,尽管事实上我在屏幕上看到了这些结果。我设法找出错误的地方,从Group类

覆盖toString方法

我花了一些时间试图在我的代码中发现错误,但无济于事。所以最后我放弃了 - 自从我开始这门课程以来第一次 - 我寻找了一个正确的答案。当我应用找到的解决方案时,测试通过但是我无法在我的控制台上看到任何结果。我不明白为什么。

1 个答案:

答案 0 :(得分:2)

因为您不应该在控制台上看到任何内容。 toString()方法返回对象的String表示形式。在正确的代码中,返回正确的结果。

在您的代码中,您在控制台上显式打印内容,然后返回空String