【发布时间】:2011-01-10 06:42:09
【问题描述】:
Java 新手在这里寻求帮助。这是有问题的代码:
public void generateCodeTable(Node tree, StringBuffer buf) {
if (tree != null) {
StringBuffer newSB = new StringBuffer();
newSB.append(buf);
if (tree.key != '$') {
System.out.print(tree.key + "(" + buf + ") " );
} else {
System.out.print(tree.key + "(" + buf + ") " );
}
generateCodeTable(tree.getLeftNode(), newSB.append(1));
generateCodeTable(tree.getRightNode(), newSB.append(0));
}
它的作用是在递归循环的每次迭代中不断地附加到 SAME StringBuffer,而我真正希望能够做到的是,它每次都创建一个全新的 StringBuffer。有什么方法可以强制创建一个新的 StringBuffer 吗?
希望这是有道理的;让我知道在哪里可以澄清。谢谢! :)
【问题讨论】:
-
是什么让您认为您使用的是相同的 StringBuffer?每一对递归,您都在创建一个新的,尽管您将旧数据附加到新数据。
-
我很困惑。每次函数递归时,您似乎都在创建一个新的 StringBuffer 。 (在第 3 行)。也许如果你描述你想要完成的事情会更有意义。
标签: java recursion object stringbuffer