Java数组栈,从上到下打印堆栈内容

时间:2016-04-17 21:00:41

标签: java arrays stack

我对编程比较陌生,无法对此进行排序。我有一个我刚刚设置的阵列堆栈。我正在尝试创建一个toString()方法,该方法返回从堆栈顶部到底部列出的数组的内容。

例如,数组包含元素... [1,2,3,4,5],其中'5'是堆栈的顶部,'1'是底部。我想返回'5',然后是新行,然后是'4'等,直到我达到'1'。

到目前为止,我对toString方法的代码是:

/**
 * Returns a string representation of this stack. The string has
 * form of each element printed on its own line, with the top most              
 * element displayed first, and the bottom most element displayed
 * last.
 * If the list is empty, returns the word "empty".
 * @return a string representation of the stack
 */
public String toString()
{
    String result = "";
    for (int scan = 0; scan < top; scan++)
        result = result + stack[scan].toString() + "\n";
    return result;
}

目前,这是从底部到顶部而不是从顶部到底部返回堆栈的内容。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

用以下内容替换你的toString方法:

 public String toString(){
     String result = "";
     for (int scan =top-1 ; scan >= 0; scan--)
         result = result + stack[scan].toString() + "\n";
     return result;
 }

答案 1 :(得分:0)

根据规范的评论,代码应该验证数组是否为空:

public String toString(){

    String result = "";
    for (int scan =stack.length-1 ; scan >= 0; scan--) {
         if(stack[scan] != null ) {
             result = result + stack[scan].toString() + "\n";
         }
    }

    if( result.length() == 0) {
        return "empty";
    } else {
        return result;
    }

}

答案 2 :(得分:0)

试试这个:

public String toString(){
    StringBuilder sb = new StringBuilder();
    for(int i=stack.size()-1;i>=0;i--) {
        sb.append(stack.get(i)).append("\n");
    }
    return sb.length()>0 ? sb.toString(): "empty";  
}