2011-01-14 70 views
0

这与我提出的一个早期问题有关。我将一个toString()方法添加到一个类中。该类使用一堆整数创建一个任意长的自然数。我只是递增和递减,所以堆栈似乎是一个好方法。反正,我没有得到从下面的代码的任何输出:新方法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()); 对象调用number是指我Stack<Integer> 我得采取从堆栈中结束(显然在逆),然后再次反转以正确打印。无论如何,不​​要急于这一点,但总是感激的帮助!

+0

您可能希望将整数更改为int,并将字符更改为char,因为它们既快速又高效。 – tanyehzheng 2011-01-14 04:27:42

+0

如果我不是这样的java noob,我会的。它现在在工作,上帝知道如果我改变一些简单的东西会发生爆炸。一如既往,我喜欢'反馈! – V1rtua1An0ma1y 2011-01-14 04:31:01

回答

7

字符串是不可变:


backwards.concat(temp_str); 

应该


backwards = backwards.concat(temp_str); 

而且随着out_final串联相同。

或者,如果您的堆栈相当大,StringBuilder可能对您有用并可能更有效。