Java:导入包含空字段的csv会产生NullPointerException

Java:导入包含空字段的csv会产生NullPointerException,java,csv,import,field,filechooser,Java,Csv,Import,Field,Filechooser,我一直在尝试将包含空字段的csv文件导入数据库,方法是使用文件选择器选择该文件。使用filechooser很重要,因为它是学校使用的一个程序,他们希望能够通过导入自己拥有的excel/csv文件,每年导入新的学生记录。每当我运行下面给出的代码时,都会出现以下错误: SEVERE: null java.lang.NullPointerException at gui.FXMLStudentController$1.run(FXMLStudentController.java:86) at java

我一直在尝试将包含空字段的csv文件导入数据库,方法是使用文件选择器选择该文件。使用filechooser很重要,因为它是学校使用的一个程序,他们希望能够通过导入自己拥有的excel/csv文件,每年导入新的学生记录。每当我运行下面给出的代码时,都会出现以下错误:

SEVERE: null
java.lang.NullPointerException
at gui.FXMLStudentController$1.run(FXMLStudentController.java:86)
at java.lang.Thread.run(Thread.java:745)
我想问题是显而易见的。我如何使它在没有错误的情况下工作

进口商类别:

public class ImportStudents
{
private File file;
private List<Student> students = new ArrayList<>();

public ImportStudents(File file) throws IOException 
{
    this.file = file;
}

public List importStudents() throws FileNotFoundException, IOException
{
   try(CSVReader reader = new CSVReader(new FileReader(file), ';'))
   {
   String[] nextLine;
   boolean notFirst = false;
   while ((nextLine = reader.readNext()) != null) {
        if (notFirst) {

             students.add(new Student(nextLine[3], nextLine[1], nextLine[0],nextLine[2]));
        }
        notFirst = true;
    }

   }catch(Exception e)
           {
               e.printStackTrace();
           }
    return students;
}
}
存储库中的代码:

  public void importStudents(List<Student> students)
{
    try{
        em.getTransaction().begin();
        for (Student : students) 
        {
           em.persist(student);
        }
        em.getTransaction().commit();
    }
    finally
    {
        em.close();
    }
}
学生构造函数看起来像这样

public Student(String class, String name, String surNaam, String email) 
{

    this.class = class;
    this.name = name;
    this.surNaam = surNaam;
    this.email = email;
}

学生构造函数看起来怎么样?如果分隔符之间没有任何内容,我很难在javadocs中找到readNext在字符串引用中的值。它可以是空字符串,也可以是空字符串。在这种情况下,可能是在学生构造函数中使用该值所做的操作对于null值是不合法的

编辑

如果是这种情况,您可以在构造函数中处理null值的传递,也可以编写一个类似以下内容的静态方法:

public static String Convert(String str) {
    return str == null ? "" : str;
}
在实例化学生时,请执行以下操作:

new Student(Convert(nextLine[3]), ... );

将学生构造函数代码添加到问题中。也尝试了转换方法,但仍然是相同的errorStack跟踪?例外向他扔绳子?
public static String Convert(String str) {
    return str == null ? "" : str;
}
new Student(Convert(nextLine[3]), ... );