1
我有一个包含这样的信息的文件: 具有麻烦从文件中提取数据,劈裂它并将其存储到数组/数组列表
的行数而变化。教授正在使用其他文件来测试该程序。
我想从此文件中提取长名称并将其打印出来。
以下是我有:
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)
我很困惑。我标记了代码中发生错误的位置。任何人都可以帮助我吗?
我猜你的'printInfo'和'main'方法在你的'Data'类中。在那张纸上,你正在将'Data d'传递给'printInfo',但你实际上并没有使用它。你会得到NullPointer,因为显然'longName'是NULL。现在假设'printInfo'和'main'方法在你的'Data'类中,最好使用'd.longName.size()',并且更好地将它包装在NULL检查IF条件内。但是你仍然会得到NP,因为你的'd.longName'仍然是NULL,所以你需要确保你正在实例化它。 – hagrawal
你在哪里调用'extractName'? – sam