Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多态二叉搜索树_Java_String_Binary Tree_Polymorphism - Fatal编程技术网

Java 多态二叉搜索树

Java 多态二叉搜索树,java,string,binary-tree,polymorphism,Java,String,Binary Tree,Polymorphism,我有两个类,NoneEmptyTree和EmptyTree,它们实现了树接口toString()方法应返回字符串:key=>value-key=>value-key>value等。。。 我不知道如何删除结果末尾的最后一个空格。 编辑:我不能在String类中使用任何方法,也不能将任何内容与null进行比较 public String toString() { String result = ""; result+=(this.left.toString());

我有两个类,NoneEmptyTree和EmptyTree,它们实现了树接口<非空树类中的code>toString()方法应返回字符串:
key=>value-key=>value-key>value
等。。。 我不知道如何删除结果末尾的最后一个空格。 编辑:我不能在String类中使用任何方法,也不能将任何内容与null进行比较

public String toString() {
        String result = "";
        result+=(this.left.toString());
        result+=this.key;
        result+="=>";
        result+=this.value;
        result+=" ";
        result+=this.right.toString();
        return result;
    }
我尝试为类设置一个变量,该变量指示非空树实例是否是当前树中最大的实例,但控制台显示了相同的字符串

例如,字符串如下所示:

"7=>seven 10=>ten 12=>twelve 15=>fifteen 16=>sixteen 17=>seventeen 20=>twenty 30=>thirty "
任何帮助都将不胜感激。谢谢

使用
String.trim()

顺便说一句,如果你做了大量的
String
添加,最好使用
StringBuilder
及其方法
append()
,而不是使用
+

添加多个
String
使用
String.trim()


顺便说一句,如果你做了大量的
String
添加,最好使用
StringBuilder
及其方法
append()?见下文:

public String toString() 
{ 
    String result = ""; 
    result+=(this.left.toString());
    result+=this.key; result+="=>";
    result+=this.value; 
    if (this.right!=null)  // Just add this, so it doesn't add an extra space if no right result exists
    {
        result+=" ";
        result+=this.right.toString();
    }
    return result; 
}

你能简单地添加一个“如果”吗?见下文:

public String toString() 
{ 
    String result = ""; 
    result+=(this.left.toString());
    result+=this.key; result+="=>";
    result+=this.value; 
    if (this.right!=null)  // Just add this, so it doesn't add an extra space if no right result exists
    {
        result+=" ";
        result+=this.right.toString();
    }
    return result; 
}

我认为需要交换if条件中的两个语句。如果我理解正确,如果右分支不为null,那么输出应该有一个空格后跟该分支。非常正确。我太匆忙地从原来的帖子上复制/粘贴了它。已经纠正了。谢谢。我想你需要交换if条件中的两个语句。如果我理解正确,如果右分支不为null,那么输出应该有一个空格后跟该分支。非常正确。我太匆忙地从原来的帖子上复制/粘贴了它。已经纠正了。谢谢。StringBuilder的默认容量为16个字符。考虑用更大的初始容量初始化它以防止增量重新分配和复制。但即使考虑到这会比他现在做的更好;)@seh:这里的问题是,我们需要知道结果字符串有多大,因为我们不想创建太大的缓冲区。谢谢大家的回答。不幸的是,我不允许使用String类的任何方法,
StringBuilder
的默认容量是16个字符。考虑用更大的初始容量初始化它以防止增量重新分配和复制。但即使考虑到这会比他现在做的更好;)@seh:这里的问题是,我们需要知道结果字符串有多大,因为我们不想创建太大的缓冲区。谢谢大家的回答。不幸的是,我不允许使用String类的任何方法…我尝试了trim。。它不起作用。我不允许使用String类中的任何方法。谢谢你的帮助我试过修剪。。它不起作用。我不允许使用String类中的任何方法。谢谢你的帮助
public String toString() {
    StringBuilder result = new StringBuilder();
    result.append(this.left.toString());
    result.append(this.key);
    result.append("=>");
    result.append(this.value);
    result.append(" ");
    result.append(this.right.toString());
    return result.toString().trim();
}