所以我必须写一个程序,这是一个航班预订系统。如果我正常运行程序并在出现提示时输入值,则没有任何问题,但是当我使用.txt文件输入时,我得到一个NullPointerException
。代码即时得到了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("")) {
”
t他输入的文字如下:
First
WAAW
2
Economy
WCAACW
3
...
我不确定为什么它在使用输入文本时不起作用。
你能否确认你的代码中有'if(className.equals(“”)){'这条语句在'UserInterface.java'的'21行'? –