Java:将顺序遍历作为字符串返回给JLabel
尝试将顺序遍历的输出返回到Java JLabel。我可以返回ArrayList的内容,但需要输出为不带[,,]的字符串。我相信这是一个简单的解决方案,但我已经尝试了一段时间不同的事情,基本上是追逐我的尾巴。非常感谢您提供的任何帮助 图形用户界面部分: 将文本字段中的输入存储为字符串原始列表。尝试使用getResult()的输出设置JLabel“resultBox”的文本 getResult()标记原始列表并插入到BinarySearchTree“tree”中,并返回索引遍历“tree.inorder()” inorder()调用inorderRec()并返回结果Java:将顺序遍历作为字符串返回给JLabel,java,user-interface,binary-tree,Java,User Interface,Binary Tree,尝试将顺序遍历的输出返回到Java JLabel。我可以返回ArrayList的内容,但需要输出为不带[,,]的字符串。我相信这是一个简单的解决方案,但我已经尝试了一段时间不同的事情,基本上是追逐我的尾巴。非常感谢您提供的任何帮助 图形用户界面部分: 将文本字段中的输入存储为字符串原始列表。尝试使用getResult()的输出设置JLabel“resultBox”的文本 getResult()标记原始列表并插入到BinarySearchTree“tree”中,并返回索引遍历“tree.inord
// This method mainly calls inorderRec()
String inorder() {
String result = inorderRec(root);
return result;
}
// A utility function to do inorder traversal of BST
String inorderRec(Node root) {
if (root != null) {
inorderRec(root.left);
keyList.add(root.key);
inorderRec(root.right);
}
return String.valueOf(keyList);
//return result;
}
如果使用input 50 30 20 40 70 60 80,则JLabel的结果应为20 30 40 50 60 70 80,但实际输出为[20,30,40,50,60,70,80]String。valueOf(keyList)
调用列表的toString
,因此您得到了表示
相反,在inorderec
方法返回后,以所需格式构造输出。对于这一点,我发现在添加到某个列表(keyList
)时,无需从inorderRec中返回任何内容(您没有显示创建它的位置)
String.join
的javadoc状态
返回一个新的{@code String},它由{@code CharSequence元素}的副本和指定的{@code delimiter}的副本组成
如果您使用的是Java8或更高版本,那么可以使用
String.join()
API()将列表中的所有元素连接到一个带有给定分隔符的字符串中。例如:
List<String> names = Arrays.asList("Mark", "Stacy", "Gretta");
System.out.println(String.join(" ", names));
List name=Arrays.asList(“Mark”、“Stacy”、“Gretta”);
System.out.println(String.join(“,name));
将输出:
马克·斯泰西·格雷塔
我猜出来了。我thin user7给了我一个“在inorderRec方法返回后以所需格式构造输出”的线索。我最初在inorderRec()中迭代了keyList,但只输出一个索引,很可能是因为循环中的语句是:
结果=String.valueOf(keyList.get(i)+“”)
而不是
result+=String.valueOf(keyList.get(i)+”)
我把它移到了inoder(),所有输出都正确。非常感谢你们两位的帮助。非常感谢
正确更新代码输出:
// This method mainly calls InorderRec()
String inorder() {
//String result = inorderRec(root);
inorderRec(root);
for (int i = 0; i < keyList.size(); i++) {
//System.out.print(keyList.get(i) + " ");
result += String.valueOf(keyList.get(i) + " ");
}
return result;
}
// A utility function to do inorder traversal of BST
void inorderRec(Node root) {
if (root != null) {
inorderRec(root.left);
keyList.add(root.key);
inorderRec(root.right);
}
}
//此方法主要调用inorderec()
字符串顺序(){
//字符串结果=inorderRec(根);
有序(根);
对于(int i=0;i
两个输出都是相同的。我试图使用String.join,但输出控制台出现了许多红色错误:(您可以上传这些错误吗?这将有助于找出问题所在。很抱歉,keyList超出了范围,但最初在inorderRec()内)。尝试了各种组合,但从未将其放回。String.join也不起作用。您确实帮助我让我知道我不需要两种返回,非常感谢。请使用您当前的代码更新您的问题,以便我们能够提供帮助。
String inorder() {
inorderRec(root);
return String.join(" ", ketList);
}
void inorderRec(Node root) {
if (root != null) {
inorderRec(root.left);
keyList.add(root.key);
inorderRec(root.right);
}
}
List<String> names = Arrays.asList("Mark", "Stacy", "Gretta");
System.out.println(String.join(" ", names));
// This method mainly calls InorderRec()
String inorder() {
//String result = inorderRec(root);
inorderRec(root);
for (int i = 0; i < keyList.size(); i++) {
//System.out.print(keyList.get(i) + " ");
result += String.valueOf(keyList.get(i) + " ");
}
return result;
}
// A utility function to do inorder traversal of BST
void inorderRec(Node root) {
if (root != null) {
inorderRec(root.left);
keyList.add(root.key);
inorderRec(root.right);
}
}