Stack不断推送null而不是String值Java

时间:2018-04-15 03:59:21

标签: java generics stack

我正在处理一个项目,我必须将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]);
    }    

1 个答案:

答案 0 :(得分:2)

您有一个错误的错误。您没有将最后一个元素复制出源堆栈。

此:

for (int i = 0; i < stack.length - 1; i++ ) {

应该是:

for (int i = 0; i < stack.length; i++ ) {

额外提示:请考虑使用System.arraycopy