Java 方法为toString()的新类

Java 方法为toString()的新类,java,class,tostring,println,Java,Class,Tostring,Println,这与我先前提出的一个问题有关。我正在向类添加一个toString()方法。该类使用整数堆栈创建任意长的自然数。我只是在递增和递减,所以堆栈似乎是一个很好的方法。无论如何,我没有从以下代码中获得任何输出: public String toString() { String out_final = "", backwards = "", temp_str = ""; Integer temp_int = 0; Character temp_char = ' '; w

这与我先前提出的一个问题有关。我正在向类添加一个toString()方法。该类使用整数堆栈创建任意长的自然数。我只是在递增和递减,所以堆栈似乎是一个很好的方法。无论如何,我没有从以下代码中获得任何输出:

public String toString() {
    String out_final = "", backwards = "", temp_str = "";
    Integer temp_int = 0;
    Character temp_char = ' ';

    while(!number.empty()) {
        temp_int = number.pop();
        temp_str = temp_int.toString();
        backwards.concat(temp_str);
    }

    while(backwards.length() > 0) {
        temp_char = backwards.charAt(backwards.length() - 1);
        temp_str = temp_char.toString();
        out_final.concat(temp_str);
    }
    return out_final;
}
它由
System.out.println(b4.toString())调用
对象
编号
引用我的
堆栈
我必须从堆栈的末尾(显然是反向的)取下,然后再次反向以正确打印。无论如何,这件事不要着急,但我们总是很感激你的帮助

字符串是不可变的:


backwards.concat(temp_str);
应该是


backwards = backwards.concat(temp_str);
out_最终连接也是如此


或者,如果您的堆栈相当大,则使用StringBuilder可能会很有用,而且可能会更高效。

StringBuilder是推荐的选项。StringBuffer要么已弃用,要么不鼓励使用它(我认为已弃用)。您让我走上了正确的道路,因为我现在至少以正确的格式获得了输出。非常感谢:)StringBuffer未被弃用,但与同步相关的开销较大。StringBuilder在大多数情况下都更快、更适合,但不是线程安全的。您可能希望将整数更改为int,将字符更改为char,因为它们都更快、内存效率更高。如果我不是java noob,我会这样做。它现在正在工作,天知道如果我改变一些简单的事情,它会爆炸。和往常一样,我喜欢反馈!