【发布时间】:2019-09-26 16:38:39
【问题描述】:
我正在学习 Java 中的 xml 解析教程(ThinMatrix 在 .youtube 上),并试图通过逐步了解代码的工作原理。
private static XmlNode loadNode(BufferedReader reader) throws Exception {
String line = reader.readLine().trim();
if (line.startsWith("</")) {
return null;
}
String[] startTagParts = getStartTag(line).split(" ");
XmlNode node = new XmlNode(startTagParts[0].replace("/", ""));
addAttributes(startTagParts, node);
addData(line, node);
if (CLOSED.matcher(line).find()) {
return node;
}
XmlNode child = null;
while ((child = loadNode(reader)) != null) {
node.addChild(child);
}
return node;
}
在这个块中,第一个“if语句”第一次执行——即解析器第一次读取结束标记——执行“return null”行,然后程序跳转到while语句方法的底部。我以前没有见过这种行为——为什么程序在“return null”语句之后没有退出方法。
【问题讨论】:
-
通过调试器运行它。有可能,因为您使用递归,返回语句 工作正常,而代码在其他地方搞砸了。
-
这个问题似乎更像是一个调试问题,而不是关于代码的真正问题,所以它仍然是一个学习机会,即使它不是严格关于代码的。
-
@computercarguy 是的,我实际上想知道这是否是出于这个原因提出这个问题的正确地方 - 是否删除了更多关于澄清误解而不是修复代码的问题?
-
@TylerGoodwyn,实际上我试图阻止人们对这个问题投票,而不是给你建议。很抱歉造成混乱。
标签: java xml methods return return-value