比较2D数组和键盘输入

时间:2016-11-19 09:20:10

标签: java

我的输出是: 空值 空值 空值 空值 空值 空值 空值 空值 输入要搜索的航班号:

我从.txt文件中获取数据,然后将其存储在2D数组中 你能帮我解决一下这种情况吗?

这是我的代码:

import java.io.*;
public class Main {
    public static void main (String args[]) throws IOException {
        String search;
        FileReader fr = null;
        LineNumberReader lnr = null;

        String list[] = new String[160];

        String plane[][] = new String [20][8];//Creating an array in an array
        int p,i;
        try{
            //create new reader
            fr = new FileReader("Data.txt");
            lnr = new LineNumberReader(fr);
            String input = null; 
            for(p=0; p<20; p++)
            for(i=0; i<8; i++){
                input = lnr.readLine();
                if (input != null) {
                    plane[p][i]=input;
                }
            }
            //for(p=0; p<1; p++){
            //  for(i=0; i<8; i++)
            //    System.out.println(plane[p][i]);
            //}
            }catch(Exception e){
             // if any error occurs
             e.printStackTrace();
            }finally{
             // closes the stream and releases system resources
             if(fr!=null)
                fr.close();
             if(lnr!=null)
                lnr.close();
        }

        System.out.println("Enter flight number to search: \t");
        search = Keyboard.readString();
        for(p=0; p<20; p++){
            if(search == plane[p][0]){
               System.out.println("Information about flight: "+plane[p][0]);
               System.out.println("----------------------------------");
               System.out.println("Flight Number: "+plane[p][0]);
               System.out.println("Air Line: "+plane[p][1]);
               System.out.println("To: "+plane[p][2]);
               System.out.println("From: "+plane[p][3]);
               System.out.println("Departure Time: "+plane[p][4]);
               System.out.println("Estimated Time: "+plane[p][5]);
               System.out.println("Status: "+plane[p][6]);
               System.out.println("Distance: "+plane[p][7]);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我坚信这是因为您的Data.txt文件为空。 lnr.readLine()将返回

  如果已到达流的末尾,则

null

您尝试在代码中进行空检查,但它确实没有用,因为您的数组plane在创建时包含null,并且在您将其他内容放入其中之前将继续包含空值。

似乎第一次调用lnr.readLine()已经返回null,我为什么认为读者从一开始就位于文件的末尾,也就是说,文件是空的。 / p>