java - 堆栈不断推送 null 而不是 String 值 Java

标签 java generics stack

我正在开发一个项目,我必须将字符串值插入堆栈。每当我将第一个值插入堆栈时,它都会毫无问题地进入,但之后我插入的任何元素都会变成“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;
        }

这是我调用该方法的方式:

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

    for(int i = 0; i < elementArray.length; i++){
        stack.push(elementArray[i]);
    }    

最佳答案

您遇到了差一错误。您没有从源堆栈中复制最后一个元素。

这个:

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

应该是:

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

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

关于java - 堆栈不断推送 null 而不是 String 值 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838346/

相关文章:

java - 从 Artifactory 下载元数据信息

java - 使用正则表达式匹配日期范围

c# - 泛型和继承

c# - 如何使用 LINQ 从通用列表中获取下一个合适的值?

c# - 将具体类型的泛型集合转换为基类型的集合

android - Kotlin/Android:递归查找所有T型 View

java - 通过 ReentrantLock 访问的字段是否需要 volatile 关键字?

java - 在SQL中使用一个命令 - 我需要将单词 'Cars' 的所有实例更改为 'Zip-Cars' ,这包括将 'Cars 2' 更改为 'Zip-Cars 2'

c - 在 C 中连接到 TCP 堆栈

c - C 中按值或指向结构的指针的多个参数