堆栈不断推送null而不是字符串值Java

堆栈不断推送null而不是字符串值Java,java,generics,stack,Java,Generics,Stack,我正在做一个项目,我必须将字符串值推送到堆栈中。每当我将第一个值推入堆栈时,它都会毫无问题地进入,但在此之后,我推入的任何元素都会变成“null”。这是我的一些示例代码 public void push (E element){ if( isEmpty() ){ stack = (E[]) new Object[1]; stack[0] = element; } else { int size = stack.length +

我正在做一个项目,我必须将字符串值推送到堆栈中。每当我将第一个值推入堆栈时,它都会毫无问题地进入,但在此之后,我推入的任何元素都会变成“null”。这是我的一些示例代码

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;
        }
公共无效推送(E元素){
if(isEmpty()){
堆栈=(E[])新对象[1];
堆栈[0]=元素;
}否则{
int size=stack.length+1;
E[]tmpStack=(E[])新对象[大小];
对于(int i=0;i
下面是我调用该方法的方式:

String elementArray[] = str.split(",");

    for(int i = 0; i < elementArray.length; i++){
        stack.push(elementArray[i]);
    }    
String elementArray[]=str.split(“,”);
for(int i=0;i
您有一个off by one错误。您没有从源堆栈中复制最后一个元素

这:

for(int i=0;i
应该是:

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

奖金提示:考虑使用<代码>系统。

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