2012-09-28 40 views
1

我對Java很新,對編程也相對陌生。我有3個班,這是連接。Java語法方法和類

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


     } 


    } 
} 

我tryi如果乘客在Kiosk處登記,則添加PassengerFlight。我如何在Flight中使用addPassenger方法將Passenger添加到Kiosk

+2

Java,而不是JAVA。 – Nishant

+0

Kisok類的功能是什麼?我錯過了什麼嗎? –

+0

因爲你是初學者,所以給予建議.... 每當你參考時,首先檢查'null'。否則你的程序將崩潰。因此,在'checkIn'方法中,您應該將 'if if(p == null){*處理這種情況*/ }' – shan

回答

2

Kiosk.checkIn()

p.flight.addPassenger(p); 

幾個建議:

當你擁有的東西(如passanger1和passanger2)的集合,你可能想要使用數組或更好,但像一些形式的collectionArrayList

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

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

而且公共數據成員不是很好。創建你需要他們getter和setter方法,所以上面的代碼,而對子級是這樣的(實施Passanger.getFlight()後:

p.getFlight().addPassenger(p); 
+2

@vbennce ..'ArrayList'將是一個更好的選擇..我想.. –

+0

@RohitJain同意。 – vbence

0

您需要Kiosk某處的Flight類實例,否則您將無法調用其方法,唉?

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


    } 


} 

} 
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類中,聲明對01的引用類的一個實例變量.. 然後調用該實例addPassenger() ..

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

和你的addPassenger()電話會是這樣的: -

flight.addPassenger(p); 

您需要在添加List<Passenger>Flight ..這樣你就可以保持該航班中所有乘客的清單..並且使用上述方法,將passenger添加到flight

希望有所幫助..

0

將飛行艙導入自助服務終端,並將該飛行艙的實例插入自助服務終端。 現在使用Flight Class的實例您可以訪問addPassanger方法。 JST 像Instance_Of_Flight_Class.Method_Name

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); 
    } 
} 
0

爲什麼不直接編輯0​​方法有兩個參數,因爲你Kiosk看起來像某種控制器類:

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

你應該避免調用addPassenger通過Passenger對象中引用的Flight對象,別人說,因爲你不希望Passenger有什麼關係他自己除了Flight

可以,但不應通過自己的Flight參考添加Passenger。有Passenger有這樣的代碼:

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

然後,你可以在Kiosk撥打:p.addMeToFlight();