1

我对 Java 很陌生,对编程也比较陌生。我有 3 个课程,它们是相连的。

第一类:飞行

public class Flight {

    private int flightNumber;
    Passenger passenger1 = null; // two objects?
    Passenger passenger2 = null;
    private int confirmedPassengers = 0;
    Passenger bagsChecked;
    //private boolean bagsLoaded;


    public Flight(int fn, int cf){
        flightNumber = fn;
        //passenger1 = p1;
        //passenger2 = p2;
        confirmedPassengers = cf;
        //bagsChecked = bc;

    }


        public boolean addPassenger(Passenger p){
            if (confirmedPassengers == 0){
                passenger1= p;
                confirmedPassengers+=1;         
                System.out.println("P1 has been added.");
                return true;
            }   

            if (confirmedPassengers == 1){
                passenger2 = p;
                confirmedPassengers+=1;
                System.out.println("P2 has been added");
                return true;
            }

                else{
                    System.out.println("This passenger was not added because the capacity is full.");
                    return false;

                }
        }

    }

第 2 类:乘客

public class Passenger {

    private String name;
    Flight flight;
    private int bagsChecked;
    private String confirmationNumber;


    public Passenger(String n, Flight f, int b, String cn){
        name = n;
        flight = f;
        bagsChecked = b;
        confirmationNumber = cn;
    }

    public boolean hasConfirmation(){
        if (confirmationNumber != null) {
            return true;
        }

        else{
            return false;

        }

    }

}

第 3 类:售货亭:

public class Kiosk {
    private int kioskNumber;

    public Kiosk (int k){
        kioskNumber = k;

    }


    public void checkIn(Passenger p){


        if (p.hasConfirmation() == true) {

            addPassenger(p); // trying to add Passenger here
            System.out.println("Passenger " + p.getName() + ""+ "added in at Kiosk1 ");


        }


    }
}

当乘客Passenger在. 如何使用方法添加到?FlightKioskaddPassengerFlightPassengerKiosk

4

7 回答 7

2

Kiosk.checkIn()

p.flight.addPassenger(p);

一些建议:

当你有一个集合(比如 passanger1 和 passanger2)时,你可能想要使用一个数组或者更好的一些集合形式,比如ArrayList

ArrayList<Passanger> passangers = new ArrayList<Passanger>(2);

passangers.add(p);
System.out.println(passangers.size());

公共数据成员也不是很好。在需要的地方创建 setter 和 getter,所以上面的代码应该是这样的(在实现之后Passanger.getFlight()

p.getFlight().addPassenger(p);
于 2012-09-28T08:30:55.717 回答
0

您需要在 Kiosk 的某个地方创建一个 Flight 类的实例,否则您将无法调用它的方法,是吗?

于 2012-09-28T08:29:39.967 回答
0

使用组合

public class Kiosk { 

private int kioskNumber;
private Flight f;
private Passenger ps;

public Kiosk (int k){
    kioskNumber = k;

}


public void checkIn(Passenger p){


    if (p.hasConfirmation() == true) {

        f.addPassenger(p); // trying to add Passenger here
        System.out.println("Passenger " + p.getName() + ""+ "added in at Kiosk1 ");


    }


}

}
于 2012-09-28T08:34:08.770 回答
0
if (p.hasConfirmation() == true) {

    addPassenger(p); // trying to add Passenger here
    System.out.println("Passenger " + p.getName() + ""+ "added in at Kiosk1 ");
}

你的addPassenger(p)方法不是静态的。所以你不能调用它,除非你有一个声明它的类的实例。

在您的Kiosk类中,将对类的引用声明Flight为实例变量..然后调用addPassenger()该实例..

private Flight flight = p.getFlight(); // Edited -- new Flight();

你的电话addPassenger()是这样的: -

flight.addPassenger(p);

您需要List<Passenger>在类中添加 a Flight.. 这样您就可以维护该航班中所有乘客的列表.. 并使用上述方法,将 a 添加passengerflight

希望有帮助..

于 2012-09-28T08:34:32.343 回答
0

将 Flight Class 导入 Kiosk 并将该 Flight Class 的实例放入 Kiosk。现在使用 Flight 类的实例,您可以访问方法 addPassanger。就像Instance_Of_Flight_Class.Method_Name

于 2012-09-28T08:35:43.707 回答
0
// add a new method to Passanger class
public Flight getFlight() { return flight; }

// change how you use addPassanger() in Kiosk
if (p.hasConfirmation()) {
    Flight passangersFlight = p.getFlight();
    if (passangersFlight != null) {
        passangersFlight.addPassanger(p);
    }
}
于 2012-09-28T08:35:57.053 回答
0

为什么不直接编辑该checkIn(Passenger p)方法以具有两个参数,因为您Kiosk看起来像某种 Controller 类:

checkIn(Passenger p, Flight f) { 
  if (f != null) f.addPassenger(p); 
}

?

正如其他人所说,您应该避免addPassenger通过Flight对象中引用的Passenger对象进行调用,因为您不希望Passenger与他自己对Flight.

可以,但不应该Passenger通过他自己的Flight参考添加。有Passenger这个代码:

public boolean addMeToFlight() {
  return flight.addPassenger(this);
}

然后,您可以调用Kiosk: p.addMeToFlight();

于 2012-09-28T08:48:46.650 回答