从文件中提取数据、拆分数据并将其存储到 array/arraylist 时遇到问题

having trouble extracting data from a file, spliting it and storing it into array/arraylist

我有一个包含如下信息的文件:

行数不同。教授正在使用其他文档测试程序。

我想从这个文件中提取长名称并打印出来。

这是我的:

public List<String> extractName(List<String> longName)
{
  Data data = new Data();
  Scanner scan = new Scanner(actualFile);
  longName = new List<String>();
  String line = scan.nextLine();

    if(line.contains("---"))
      {
         while(line != null)
      {
         String[] name = line.split(" +");
         longName.add(name[2]);
      }
     data.setLongName(longName);
   }
  return longName;
}

和我的 main 方法以及另一种方法:

  public static void main(String[] args) throws FileNotFoundException{
    //process file
      try{
          File actualFile = new File(args[0]);
          System.out.println("File was processed: true");
         }
      catch (ArrayIndexOutOfBoundsException e)
            {
                System.out.println("File was processed: false. Re-enter filename.");
                return;
            }
      Data data = new Data();
      printInfo(data); // error occurs here
  }

  public static void printInfo(Data d){
        for(int i = 0; i < longName.size(); i++) //error occurs here
          System.out.println(longName.get(i));

  }

和我的class,以防有人需要:

public class Data{

    private List<String> longName;

    public void Data(){}

    public void setLongName(List<String> theLongName){
        longName = theLongName;
    }
    public List<String> getLongName(){
        return longName;
    }
}

但是当我 运行 它时,我得到这个错误:

Exception in thread "main" java.lang.NullPointerException
    at project2shm.printInfo(project2shm.java:35)
    at project2shm.main(project2shm.java:18)

我很困惑。我在代码中标记了错误发生的位置。谁能帮帮我?

project2shm.main() 从不给 project2shm.printInfo() 使用的 longName 变量赋值。 longName 变量显然是 project2shm class.

中的静态变量

您没有提供 project2shm 的完整源代码,但它既没有初始化 longName,也没有将 null 分配给它。无论哪种情况,都会导致您看到的 NPE。