这是我写的代码:
try {
String[] Flight_Inputs = null;
Scanner in = new Scanner(f); // f = input file
int counter =0;
while(in.hasNextLine()) {
Flight_Inputs[counter++] = in.next();
//Flight_Inputs = in.nextLine().split("\n"); // Also tried this
}
in.close();
for(int i = 0,j=0; i < Flight_Inputs.length; i++){
Boeing.setDestination_from(Flight_Inputs[j++]);
Boeing.setDestination_to(Flight_Inputs[j++]);
Boeing.setName(Flight_Inputs[j++]);
}
我在线程“AWT-EventQueue-0”中遇到异常java.lang.NullPointerException错误我也尝试了其他变体并得到了一个错误,我试图访问Flight_Inputs的索引1,但编译器说它不存在。
我想要做的只是从文本文件中获取一些行并将它们分配给Boieng对象的变量......任何帮助都将不胜感激!
答案 0 :(得分:4)
您应该将Flight_Inputs更改为动态大小列表,例如:
变化:
//as Pshemo pointed out, this is null,
//and is causing your NullPointerException
String[] Flight_Inputs = null;
...
Flight_Inputs[counter++] = in.nextLine();
...
for(int i = 0,j=0; i < Flight_Inputs.length; i++){
为:
List<String> Flight_Inputs = new ArrayList<String>();
...
Flight_Inputs.add(in.next());
...
for(String filghtInput : Flight_Inputs){
答案 1 :(得分:4)
您从未初始化Flight_Inputs
数组,这就是您获得java.lang.NullPointerException
的原因。无论如何,如果您不知道文件将包含多少行,则应使用List
而不是ArrayList<String>
。
尝试这种方式:
List<String> lines= new ArrayList<String>();
Scanner in = new Scanner(f); // f = input file
while(in.hasNextLine()) {
lines.add(in.nextLine());
}
in.close();
现在迭代这个列表你可以使用
for(String line: lines){
System.out.println(line);
}
答案 2 :(得分:2)
是的,String[] Flight_Inputs = null;
表示...... Flight_Inputs
为空。
您需要使用非null值对其进行实例化,例如:
String[] Flight_Inputs = new String[size];
除了你可能事先不知道尺寸。
如果你使用Java 7,那么这是一个更简单的选择:
List<String> lines = Files.readAllLines(file, charset);