从文件中提取数据、拆分数据并将其存储到 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。
我有一个包含如下信息的文件:
行数不同。教授正在使用其他文档测试程序。
我想从这个文件中提取长名称并打印出来。
这是我的:
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。