3499个元素后的Java数组空指针

标签 java arrays nullpointerexception max

我有一段代码用于扫描大量数字(作为整数)并将它们存储到场景对象中。但是,在我到达第 3499 个对象(它打印第 3498 个 J)后,它因空指针而崩溃。我寻找最大数组大小但在互联网上找不到任何东西,除了 2^32-5 但是我什至没有接近那个限制。

        in1scan = new Scanner(in1);
        in2scan = new Scanner(in2);
        scenario[] ret= new scenario[9999];
        int j=0;

        while (in1scan.hasNext()){
            String[] input=(in1scan.next().split(",", 16));
                    ret[j]=new scenario();
            for (int i=0; i<16;i++){

                ret[j].input[i]=Integer.parseInt((input[i]));   
            }
            j++;
        }

        j=0;
        while (in2scan.hasNext()){
            ret[j].correct=Integer.parseInt(in2scan.next()); //here things go wrong
            j++;
            System.out.println(j);
        }

有人知道怎么回事吗?是的,我知道我可以使用 nextInt 而不是当前接受数字的迂回方式,但我将添加一些需要以这种方式处理的额外功能。

最佳答案

你已经“用完”了 ret。

在这部分代码中,您创建了 ret

的第一个 in1scan.size() 元素
    while (in1scan.hasNext()){
        String[] input=(in1scan.next().split(",", 16));
        for (int i=0; i<16;i++){
            ret[j]=new scenario();
            ret[j].input[i]=Integer.parseInt((input[i]));   
        }
        j++;
    }

这里您使用 ret 的第一个 in2scan.size() 元素。如果 in2scan.size() > in1scan.size()ret[j] 将为空,因此无法调用 .correct

    j=0;
    while (in2scan.hasNext()){
        ret[j].correct=Integer.parseInt(in2scan.next()); //here things go wrong
        j++;
        System.out.println(j);
    }

在调试器中逐步执行将(希望)确认这一点

关于3499个元素后的Java数组空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18875508/

相关文章:

Java EE 示例应用程序

c - 如何查找数组中其中一个元素为零的元素数量

java - 不知道用户什么时候才能停止猜测呢?

c# - 如何显示数组元素出现的次数

java - 致命异常 : main Caused by: java. playAudio 处的 lang.NullPointerException(extras.getInt(MEDIA));

java - BlueJ 调用公共(public)方法空指针异常(java.awt.container)

java - 从 POST 请求中读取正文

java - 如何使用 Byte Buddy 创建默认构造函数

用于 ArrayList 数据的 Java 扫描器

java - NullPointerException java 错误