Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决这个java.lang.NullPointerException错误?_Java_File_Text - Fatal编程技术网

如何解决这个java.lang.NullPointerException错误?

如何解决这个java.lang.NullPointerException错误?,java,file,text,Java,File,Text,我目前正在尝试构建一个时钟程序来练习构建类和存储文本数据。我目前收到一个nullPointerException,尽管我相信我正确初始化了时钟阵列温度 public TimeClock[] readFile(){ try{ read = new Scanner(new File("TimeClockData.txt") ); } catch (Exception e){ System.out.println("could not find file

我目前正在尝试构建一个时钟程序来练习构建类和存储文本数据。我目前收到一个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中初始化数组只需创建一个给定大小的空数组。在使用每个元素之前,仍然必须显式初始化它:

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++;

}

所有临时数组元素都为空。首先,您必须初始化它们

...
temp[count] = new TimeClock(); 
temp[count].setInTime( Long.parseLong(data1) );
...
此外,您还可以检查hasNext一次,但请致电next三次。