0

这是我写的代码:

    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 对象的变量......任何帮助将不胜感激!

4

3 回答 3

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){
于 2013-06-10T17:34:38.280 回答
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);
}
于 2013-06-10T17:35:01.650 回答
2

好吧,是的,String[] Flight_Inputs = null;意味着...Flight_Inputs为空。

您需要使用非 null 值对其进行实例化,例如:

String[] Flight_Inputs = new String[size];

除了你可能事先不知道尺寸。

如果你使用 Java 7,一个更简单的选择:

List<String> lines = Files.readAllLines(file, charset);
于 2013-06-10T17:35:31.590 回答