Java:将顺序遍历作为字符串返回给JLabel

Java:将顺序遍历作为字符串返回给JLabel,java,user-interface,binary-tree,Java,User Interface,Binary Tree,尝试将顺序遍历的输出返回到Java JLabel。我可以返回ArrayList的内容,但需要输出为不带[,,]的字符串。我相信这是一个简单的解决方案,但我已经尝试了一段时间不同的事情,基本上是追逐我的尾巴。非常感谢您提供的任何帮助 图形用户界面部分: 将文本字段中的输入存储为字符串原始列表。尝试使用getResult()的输出设置JLabel“resultBox”的文本 getResult()标记原始列表并插入到BinarySearchTree“tree”中,并返回索引遍历“tree.inord

尝试将顺序遍历的输出返回到Java JLabel。我可以返回ArrayList的内容,但需要输出为不带[,,]的字符串。我相信这是一个简单的解决方案,但我已经尝试了一段时间不同的事情,基本上是追逐我的尾巴。非常感谢您提供的任何帮助

图形用户界面部分: 将文本字段中的输入存储为字符串原始列表。尝试使用getResult()的输出设置JLabel“resultBox”的文本

getResult()标记原始列表并插入到BinarySearchTree“tree”中,并返回索引遍历“tree.inorder()”

inorder()调用inorderRec()并返回结果

// 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);
        }
    }