简短版本:
为什么要这样写代码:
@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方法的错误所在
我花了一些时间试图找出代码中的错误,但没有用。因此,我最终放弃了--自从我开始这门课程以来的第一次--我寻找了一个正确的答案。当我应用找到解决方案时,测试通过了,但是iI在我的控制台上看不到任何结果。我也不知道为什么。
发布于 2017-12-01 17:30:05
因为你不应该在控制台上看到任何东西。toString()方法返回一个对象的String表示形式。在正确的代码中,将返回正确的结果。
在您的代码中,显式地在控制台上打印内容,然后返回一个空的String。
https://stackoverflow.com/questions/47590222
复制相似问题