如何在类JAVA中填充数组

时间:2014-10-22 07:49:22

标签: java arrays nullpointerexception

所以我遇到了一个我想要创建的程序的问题。如果没有错误

,我无法将数据放入数组int[] serviceCode
Exception in thread "main" java.lang.NullPointerException
    at Job_18028094.<init>(Job_18028094.java:24)
    at BMAS_Main_18028094.main(BMAS_Main_18028094.java:76)

以下是我的代码的相关部分。

来自我的主要:

String[] tempRecords = fileScan.nextLine().split(",");
jobList[loopCount] = new Job_18028094(tempRecords);

来自我的班级&#39;工作&#39;:

private int[] serviceCode;

public Job_18028094(String[] tempRecords) {
    serviceCode[0] = Integer.parseInt(tempRecords[6]);
}

要清理,tempRecords[6]中的数据为String(但都是数字)并且在转换之前一直使用Integer#parseInt。我研究了错误意味着什么并且已经发现它意味着变量是一个“空”&#39;值,但我不确定如何更改它或只是用tempRecords中的数据写它。

提前感谢您的帮助:)

3 个答案:

答案 0 :(得分:2)

抛出NullPointerException,因为未初始化ServiceCode数组。数组是静态对象,需要在任何使用之前进行初始化。此外,您应该在使用之前提供此数组的大小!尝试将“size”参数传递给Job_18028094构造函数。这将解决问题。

答案 1 :(得分:1)

您必须在使用前初始化此array

 private int[] serviceCode; // else serviceCode is null

您可以使用

 private int[] serviceCode=new int[5];

如果您不确定length的{​​{1}}。使用array

List

答案 2 :(得分:0)

当你使用语句private int[] serviceCode;简单地声明一个数组时,你告诉编译器一个名为 serviceCode 的变量将保存一个整数数组。此时,编译器不会被告知阵列将保持多少个整数。因此,此时不会发生保持整数的实际内存分配。

要开始将整数放入数组中,相应的内存分配应该已经发生。只有在使用以下语句初始化数组时,编译器才会负责执行此内存分配。

int[] serviceCode = new int[5] 

在上面的初始化之后,将完成内存分配以使数组保持5个整数,并且数组将填充整数的默认值(即&#39; 0&#39;)。现在您可以开始将不同的值放入数组中。

在你的情况下,由于你还没有初始化数组,所以没有发生内存分配,导致在你尝试访问数组时抛出NullPointerException。