无法从文件中提取数据,将其拆分并存储到数组/ arraylist

时间:2015-11-07 22:56:17

标签: java arrays arraylist nullpointerexception readfile

我有一个包含以下信息的文件: table of the data

行数不一。教授正在使用其他文件来测试该程序。

我想从此文件中提取长名称并将其打印出来。

这就是我所拥有的:

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

  }

和我的班级,万一有人需要它:

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)

我很困惑。我在代码中标记了错误发生的位置。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

project2shm.main()从不为longName使用的project2shm.printInfo()变量赋值。那个longName变量显然是project2shm类中的静态变量。

您没有提供project2shm的完整来源,但它不会初始化longName,也不会为其分配null。无论哪种情况,都会导致您看到的NPE。