我正在处理一个项目,我必须将String值推入堆栈。每当我将第一个值推入堆栈时,它就没有任何问题,但在此之后,我推送的任何元素都变为“无效”。这是我的一些示例代码
public void push (E element){
if( isEmpty() ){
stack = (E[]) new Object[1];
stack[0] = element;
} else {
int size = stack.length + 1;
E[] tmpStack = (E[]) new Object[size];
for (int i = 0; i < stack.length - 1; i++ ) {
tmpStack[i] = stack[i];
}
stack = tmpStack;
tmpStack = null;
stack[size - 1] = element;
}
以下是我如何调用该方法:
String elementArray[] = str.split(",");
for(int i = 0; i < elementArray.length; i++){
stack.push(elementArray[i]);
}
答案 0 :(得分:2)
您有一个错误的错误。您没有将最后一个元素复制出源堆栈。
此:
for (int i = 0; i < stack.length - 1; i++ ) {
应该是:
for (int i = 0; i < stack.length; i++ ) {
额外提示:请考虑使用System.arraycopy
。