我在Java中遇到这个函数的问题。我不明白为什么当lastNodeAttributes==null
为真时,执行会按原样跳转到return null;
,但在此之后,它不会从函数返回而是直接跳转到最后的return fight...;
。为什么第一次返回不退出但执行跳转到第二个条件部分返回?这怎么可能呢?请解释原因显然我不明白java工作的基础知识。
public Node undo() {
Node lastNode=fight.getLastChild();
NamedNodeMap lastNodeAttributes = lastNode.getAttributes();
if(lastNodeAttributes == null) { return null; }
else {
String lastNodeFighter = lastNodeAttributes.getNamedItem("fighter")
.getNodeValue();
String lastNodePoints = lastNodeAttributes.getNamedItem("points")
.getNodeValue();
if(Integer.parseInt(lastNodeFighter) == 1) {
fighter1score-=Integer.parseInt(lastNodePoints);
}
else { fighter2score -= Integer.parseInt(lastNodePoints); }
return fight.removeChild(fight.getLastChild());
}
}
答案 0 :(得分:0)
首先开始调试您的应用程序。可在此处找到一个好的调试教程:http://www.vogella.com/articles/EclipseDebugging/article.html
验证lastNodeAttributes是否为空。还要检查,如果方法可能执行两次,在第一种情况下lastNodeAttributes为null,在第二种情况下则不是。
答案 1 :(得分:0)
你所描述的是不可能的。返回语句确实总是返回所陈述的内容。您可能会在调试器中看到
的行为检查实际返回值还将确认实际上只执行了一个return
语句。通过将断点放在调用者而不是被调用者
答案 2 :(得分:-1)
返回会退出该方法。检查您是否正在使用最新的编译类。 尝试做一个干净的构建。 从第一行开始调试,确保您没有运行两次相同的方法。 如有疑问,请在课程开头添加system.out,以确保检查正确的班级版本