我的应用程序的目的是将包含1500项的现有文本文件逐行读取到item类对象数组中。我们的目标是将数据输入数组,这样我就可以使用这个应用程序作为转换我正在编写的新程序的归档文件的起点。
package sandboxPackage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class mainClass {
public static void main(String[]args) throws FileNotFoundException, IOException {
InputStream in = new FileInputStream(new File("C:\\Documents and Settings\\Adam\\Desktop\\Cloud Project\\MasterIndex.library"));
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder out = new StringBuilder();
String line;
itemClass[] m = new itemClass[1500];
int i = 0;
while ((line = reader.readLine()) != null) {
m[i].index = line; // crash is here
m[i].location = reader.readLine();
m[i].item = reader.readLine();
m[i].description = reader.readLine();
i++;
}
//Print the entire list
for (i = 0; i == 1499; i++) {
System.out.println(m[i].index);
System.out.println(m[i].location);
System.out.println(m[i].item);
System.out.println(m[i].description);
//System.out.println("This is item #" + i + 1);
}
}
}下面是itemClass:
package sandboxPackage;
public class itemClass{
String index;
String item;
String description;
String location;
}文本文件如下所示:索引位置项描述索引位置项描述索引。
编译器声称NullPointerException位于第20行,这是while循环的第一行,但我没有看到它。我看了大约1000个同样错误的例子,但它仍然没有为我计算。
发布于 2014-07-16 22:15:29
您初始化了itemClass的数组yes,但是从来没有用itemClass对象填充它。首先,您必须在分配属性之前创建一个itemClass。尝尝这个。
while ((line = reader.readLine()) != null) {
itemClass item = new itemClass();
item.index = line;
item.location = reader.readLine();
item.item = reader.readLine();
item.description = reader.readLine();
m[i] = item;
i++;
}发布于 2014-07-16 22:10:59
您只是声明了一个对象数组:
itemClass[] m = new itemClass[1500];但是,您从不实例化此数组中的对象。所以访问其中的任何实例变量都会抛出一个NullPointerException
在循环中添加数组对象的实例化:
while ((line = reader.readLine()) != null) {
m[i] = new itemClass();// change the constructor if u need to
m[i].index = line; // crash is here : should no more crash
m[i].location = reader.readLine();
m[i].item = reader.readLine();
m[i].description = reader.readLine();
i++;
}发布于 2014-07-16 22:10:43
默认情况下,对象类型数组中的元素是null。在尝试为其字段赋值之前初始化元素
while ((line = reader.readLine()) != null) {
m[i] = new ItemClass();
...
}https://stackoverflow.com/questions/24791657
复制相似问题