我对编程比较陌生,无法对此进行排序。我有一个我刚刚设置的阵列堆栈。我正在尝试创建一个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;
}
目前,这是从底部到顶部而不是从顶部到底部返回堆栈的内容。有什么建议吗?
答案 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";
}