【问题标题】:How do I solve this java.lang.NullPointerException error? [duplicate]如何解决这个 java.lang.NullPointerException 错误? [复制]
【发布时间】:2014-10-12 18:09:06
【问题描述】:

我目前正在尝试构建一个时钟程序来练习构建类和存储文本数据。尽管我相信我正确初始化了 TimeClock 数组 temp,但我目前得到了一个 nullPointerException。

public TimeClock[] readFile(){
    try{
        read = new Scanner(new File("TimeClockData.txt") );
    } catch (Exception e){
        System.out.println("could not find file");
    }

    TimeClock[] temp = new TimeClock[100];
    int count = 0;
    String data1;
    String data2;
    String data3;
    while(read.hasNext() ){

        data1 = read.next();
        data2 = read.next();
        data3 = read.next();

        temp[count].setInTime( Long.parseLong(data1) );
        temp[count].setOutTime( Long.parseLong(data2) );
        temp[count].setNotes(data3);

        count++;

    }

    read.close();

    return temp;
}

我不断收到错误:

Exception in thread "main" java.lang.NullPointerException
    at timeclock.pkg2.ReadFile.readFile(ReadFile.java:46)
    at timeclock.pkg2.Timeclock2.main(Timeclock2.java:56)
Java Result: 1

【问题讨论】:

标签: java file text


【解决方案1】:

在 Java 中初始化一个数组只需创建一个给定大小的 nulls 数组。您仍然需要在使用之前显式初始化每个元素:

while(read.hasNext() ){

    data1 = read.next();
    data2 = read.next();
    data3 = read.next();

    temp[count] = new TimeClock(); // Was missing in the OP code
    temp[count].setInTime( Long.parseLong(data1) );
    temp[count].setOutTime( Long.parseLong(data2) );
    temp[count].setNotes(data3);

    count++;

}

【讨论】:

    【解决方案2】:

    你所有的临时数组元素都是空的。你必须先初始化它们。

    ...
    temp[count] = new TimeClock(); 
    temp[count].setInTime( Long.parseLong(data1) );
    ...
    

    【讨论】:

      猜你喜欢
      • 2012-05-14
      • 2011-09-04
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2021-09-24
      • 2022-06-13
      • 2017-08-10
      • 2021-06-25
      相关资源
      最近更新 更多