代码如下:
public class PassengerFlight extends Flight {
private int numSold;
private int seat;
private Person[] passengers;
public PassengerFlight(String num, String city1, String city2, Time departure, int length, int seat) {
super(num, city1, city2, departure, length);
this.seat = seat;
this.numSold = 0;
this.passengers = new Person[seat];
}
public int getNumSold() {
return this.numSold;
}
public int getSeats() {
return this.seat;
}
public int getNumAvailable() {
return this.getSeats() - this.getNumSold();
}
public boolean sellTicket(Person buyer) {
if (this.getNumAvailable() > 0) {
passengers[numSold] = buyer;
this.numSold++;
System.out.println("Ticket sold to " + buyer.getName() + ".");
return true;
} else
System.out.println("Cannot sell more tickets - flight " + this.getFlightnum() + " is full.");
return false;
}
public String toString() {
return "Passenger flight " + super.toString() + " " + this.getNumAvailable() + " seats out of " + this.seat
+ " are available.";
}
public void postpone(int minutes) {
System.out.println("");
super.postpone(minutes);
System.out.println("Flight " + this.getFlightnum() + " is postponed till " + this.getDepartureTime());
for (int i = 0; i <= this.getNumSold(); i++) {
System.out.println("Notify passenger " + passengers[i].getName() + " at " + passengers[i].getEmail() + ".");
}
}
public static void main(String[] args) {
Time departureTime = new Time("17:15");
PassengerFlight flight1 = new PassengerFlight("3485", "BOSTON", "SEATTLE", departureTime, 240, 5);
System.out.println(flight1);
Person Jieliang = new Person("Jie", "123@gmail.com");
Person Jimmy = new Person("Jimmy", "456@gmail.com");
Person Kobe = new Person("Kobe", "789@gmail.com");
Person Fallon = new Person("Fallon", "123@hotmail.com");
Person Adele = new Person("Adele", "456@hotmail.com");
Person Rose = new Person("Rose", "789@hotmail.com");
flight1.sellTicket(Jie);
flight1.sellTicket(Jimmy);
flight1.sellTicket(Kobe);
System.out.println(flight1);
flight1.postpone(35);
System.out.println(flight1);
flight1.sellTicket(Fallon);
flight1.sellTicket(Adele);
flight1.sellTicket(Rose);
System.out.println(flight1);
}}
以下是报错的显示
Passenger flight 17:15 3485 BOSTON--SEATTLE 240 min. 5 seats out of 5 are avail
able.
Ticket sold to Jieliang.
Ticket sold to Jimmy.
Ticket sold to Kobe.
Passenger flight 17:15 3485 BOSTON--SEATTLE 240 min. 2 seats out of 5 are avail
able.
Flight 3485 is postponed till 17:50
Notify passenger Jie at 123@gmail.com.
Notify passenger Jimmy at 456@gmail.com.
Notify passenger Kobe at 789@gmail.com.
Exception in thread "main" java.lang.NullPointerException
at PassengerFlight.postpone(PassengerFlight.java:50)
at PassengerFlight.main(PassengerFlight.java:68)
希望能够得到大家的指正
大兄弟,for (int i = 0; i <= this.getNumSold(); i++) { 这段的 i越界了
i是从0开始的,i=3时时第四个数,而你只存了3个。
i <= this.getNumSold() 改为 i < this.getNumSold()
我判断是这里写错了
for (int i = 0; i <= this.getNumSold(); i++) {
System.out.println("Notify passenger " + passengers[i].getName() + " at " + passengers[i].getEmail() + ".");
}
你把i <= this.getNumSold()
改为 i < this.getNumSold()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。