如何在java中读取文本文件并将行分配给变量

时间:2013-06-10 17:29:50

标签: java arrays file-io java.util.scanner

这是我写的代码:

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

3 个答案:

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