1

私はJavaに非常に慣れておらず、プログラミングにも比較的慣れていません。私には3つのクラスがあり、それらは接続されています。

クラス1:フライト

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());

また、公開データ メンバーはあまり良くありません。必要な場所にセッターとゲッターを作成して、上記のコードは次のようになります (実装後Passanger.getFlight():

p.getFlight().addPassenger(p);
于 2012-09-28T08:30:55.717 に答える
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宣言します。次に、そのインスタンスを呼び出します。FlightaddPassenger()

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

そして、あなたの呼び出しは次のaddPassenger()ようになります: -

flight.addPassenger(p);

List<Passenger>クラスに a を追加する必要がありFlightます..そのフライトのすべての乗客のリストを維持できるように..そして上記の方法を使用して、に a を追加passengerしますflight

それが役立つことを願っています..

于 2012-09-28T08:34:32.343 に答える
0

Kiosk のどこかに Flight クラスのインスタンスが必要です。そうしないと、そのメソッドを呼び出すことができません。

于 2012-09-28T08:29:39.967 に答える
0

フライト クラスをキオスクにインポートし、そのフライト クラスのインスタンスをキオスクに作成します。これで、Flight クラスのインスタンスを使用して、メソッド addPassanger にアクセスできます。Instance_Of_Flight_Class.Method_Nameのようなjst

于 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

ある種の Controller クラスのように見える ので、メソッドを編集checkIn(Passenger p)して 2 つのパラメーターを持つようにしないでください。Kiosk

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

?

他の誰かが言ったように、オブジェクト内で参照されているオブジェクトをaddPassenger介して呼び出すことは避ける必要があります。FlightPassengerPassengerFlight

可能ですが、彼自身の参照を介して追加しないでください。このコードを持っている:PassengerFlightPassenger

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

Kiosk次に、 :を呼び出すことができますp.addMeToFlight();

于 2012-09-28T08:48:46.650 に答える