我编写了一些代码来从 .txt 文件读取车辆数据。目前我可以正确读取所有数据并很好地创建对象。我有一个 while 循环来检查文件中的文本“车辆详细信息”,如果存在(即有另一辆车要添加),它会进入循环以添加数据。
问题是,当不再有数据时, readLine() 方法仍然被调用,这会创建一个 NullPointerException (至少我认为这是原因)
这是正在使用的方法。
public static void addNewVehicleFromFile(Showroom s)
{
try
{
FileInputStream fStream = new FileInputStream("AddVehicleFromFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fStream));
String stringLine;
while ((stringLine = br.readLine()).equalsIgnoreCase("Vehicle Details"))
{
System.out.println("P1");//Testing
br.readLine();
String[] manufacturer = br.readLine().split(" =");
String[] model = br.readLine().split(" =");
String[] vin = br.readLine().split(" =");
String[] dateOfMan = br.readLine().split(" =");
String[] taxBand = br.readLine().split(" =");
String[] cost = br.readLine().split(" =");
System.out.println("P2");//Testing
System.out.println(manufacturer[0].toString());
System.out.println(model[0].toString());
System.out.println(vin[0].toString());
System.out.println(dateOfMan[0].toString());
System.out.println(taxBand[0].toString());
br.readLine();
System.out.println("P3");//Testing
int strToInt = Integer.parseInt(cost[0]);
Vehicle inputVehicle = new Vehicle(manufacturer[0], model[0], vin[0], dateOfMan[0],
taxBand[0].charAt(0), strToInt);
System.out.println("P4");//Testing
s.addVehicle(inputVehicle);
System.out.println("P5");//Testing
}
}
catch (FileNotFoundException fnfe)
{
System.out.println("File not found exception: " + fnfe.toString());
}
catch (IOException ioe)
{
System.out.println("I/O exception: " + ioe.toString());
}
System.out.println("addNewVehicleFromFile Complete");
}
不确定您是否需要它,但这是我的文件数据。
Vehicle Details
Fordtest =manufacturer
Focus =model
ioCheck =VIN
09/01/1989 =DateOfMan
d =TaxBand
19900 =Cost
Vehicle Details
Fordtest2 =manufacturer
Focus2 =model
ioCheckVIN2 =VIN
09/01/1989 =DateOfMan
a =TaxBand
1922 =Cost
最后,为了弄清楚程序运行到的位置,我添加了一些控制台输出作为测试。 while 循环迭代两次,在错误发生之前两次输出 p1-p5,并且它永远不会到达表明该方法已完成的最终控制台输出。
最佳答案
检查调用readLine()的结果是否不为null(空)。如果您检查并使其在空时不执行任何操作,这将解决您的问题!
关于java - 使用 BufferedReader (readLine()) 检查更多值时如何停止 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101358/