полиморфное дерево бинарного поиска - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть 2 класса, NonEmptyTree и EmptyTree, которые реализуют интерфейс Tree. toString() метод в классе NonEmptyTree должен возвращать строку: key=>value key=>value key>value и т.д ... Я не знаю, как убрать последний пробел в конце результата. РЕДАКТИРОВАТЬ: я не могу использовать какие-либо методы в классе String, и я не могу ничего сравнить с нулем.

public String toString() {
        String result = "";
        result+=(this.left.toString());
        result+=this.key;
        result+="=>";
        result+=this.value;
        result+=" ";
        result+=this.right.toString();
        return result;
    }

Я попытался использовать переменную для класса, которая указывает, является ли экземпляр NonEmptyTree самым большим в текущем дереве, но консоль отображала ту же строку.

например, строка будет выглядеть так:

"7=>seven 10=>ten 12=>twelve 15=>fifteen 16=>sixteen 17=>seventeen 20=>twenty 30=>thirty "

любая помощь будет оценена. спасибо

Ответы [ 3 ]

2 голосов
/ 03 апреля 2011
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();
}
2 голосов
/ 03 апреля 2011

Использование String.trim():

return result.trim()

КСТАТИ. если вы делаете много дополнений String, лучше использовать StringBuilder и его метод append() вместо добавления нескольких String с +.

1 голос
/ 03 апреля 2011

Можете ли вы просто добавить «если»? Смотрите ниже:

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; 
}
...