我正在使用Java来尝试递归迭代一个对象。为了简化我的示例,让我们说这个类叫做Simple,它包含一个ID和一个可以包含0-n个其他Simple对象的列表,而那些Simple对象有一个可以包含在0-n之间的列表其他简单对象等
我想要做的是传递一个Simple和一个ID,让我的方法返回与该ID匹配的Simple。以下是我写的方法:
public static Simple getSimpleById(Simple simple, int id) {
if (simple.getId() == id) {
return simple;
} else {
for (Simple s : simple.getSimpleList()) {
return getSimpleById(s, id);
}
}
return null; // no match found
}
问题在于递归方法调用 - 使用return语句,我的方法在遇到具有空列表的Simple时立即退出。如果没有return语句,当找到匹配项时,Simple将返回给调用者,并且该方法只是继续迭代。
我能完成递归所需的工作吗?还是我咆哮错误的树?我认为这是导致问题的列表,有更好的方法吗?
答案 0 :(得分:3)
将其更改为
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/values">
<Results>
<xsl:for-each select="value">
<xsl:variable name="a" select="substring-before(substring-after(., ';'), ';')" />
<xsl:variable name="b" select="substring-after(substring-after(., ';'), ';')" />
<Result>
<xsl:value-of select="translate($a, '+', '') + translate($b, '+', '')" />
</Result>
</xsl:for-each>
</Results>
</xsl:template>
</xsl:stylesheet>