我的应用程序旨在逐行将现有的文本文件(精确地将1500个项目)读取到项目类对象的数组中。目的是将数据放入数组,以便我可以将此应用程序用作转换归档文件的起点,该归档文件是我正在编写的新程序。

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循环的第一行,但我只是看不到它。我看过大约一千个相同错误的其他示例,但它仍然无法为我计算。

最佳答案

您可以将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++;
}

07-28 09:24