所以我必须编写一个程序,它是一个航类预订系统。如果我正常运行程序并在出现提示时输入值,没有任何问题,但是当我使用 .txt 文件输入时,我得到一个 NullPointerException
。我得到 NullPointerException
的代码部分是
public void instantiateAirplane() throws IOException{
boolean creatingAirplane = true;
String className= "";
String seatFormat;
int rowNums;
while (creatingAirplane){
input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter service class name or [ENTER] to finish: ");
className = input.readLine();
if (className.equals("")) {
creatingAirplane = false;
}
else{
System.out.println("Enter seating pattern: ");
seatFormat = input.readLine();
System.out.println("Enter number of rows: ");
rowNums = Integer.parseInt(input.readLine());
plane.creatSeatingChart(className, rowNums, seatFormat);
}
}
}
正常输入时,运行如下:
C:\Users\Owner\Desktop\Math&CIS\CS151\HW1>java UserInterface planes
Enter service class name or [ENTER] to finish:
First Class
Enter seating pattern:
WAAW
Enter number of rows:
2
Enter service class name or [ENTER] to finish:
Business Class
Enter seating pattern:
WAAW
Enter number of rows:
2
Enter service class name or [ENTER] to finish:
Add [P]assenger, Add [G]roup, [C]ancel Reservations, Print [S]eating chart, Prin
t [M]anifest, [Q]uit
但是当使用 .txt 输入时,会发生以下情况
C:\Users\Owner\Desktop\Math&CIS\CS151\HW1>java UserInterface planes < input.txt
Enter service class name or [ENTER] to finish:
Enter seating pattern:
Enter number of rows:
Enter service class name or [ENTER] to finish:
Exception in thread "main" java.lang.NullPointerException
at UserInterface.instantiateAirplane(UserInterface.java:21)
at UserInterface.main(UserInterface.java:123)
C:\Users\Owner\Desktop\Math&CIS\CS151\HW1>
异常发生在行 "if (className.equals("")) {
"
输入文本如下:
First
WAAW
2
Economy
WCAACW
3
...
我不确定为什么它在使用输入文本时不起作用。
最佳答案
一旦迭代器到达所谓的 EOF 或文件末尾,该 readLine() 方法将返回 null。检查是否 ClassName == null || className.Equal("")...
您可能还想在循环之外声明 input = new BufferedReader(new InputStreamReader(System.in));
,这样您就不会在每次循环迭代时都重新初始化读取器。
-!
关于java - 为什么在使用文本输入而不是用户输入时会出现 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7494070/