我的输出是: 空值 空值 空值 空值 空值 空值 空值 空值 输入要搜索的航班号:
我从.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]);
}
}
}
}
答案 0 :(得分:0)
我坚信这是因为您的Data.txt
文件为空。 lnr.readLine()
将返回
如果已到达流的末尾,则
null
您尝试在代码中进行空检查,但它确实没有用,因为您的数组plane
在创建时包含null,并且在您将其他内容放入其中之前将继续包含空值。
似乎第一次调用lnr.readLine()
已经返回null
,我为什么认为读者从一开始就位于文件的末尾,也就是说,文件是空的。 / p>