2012-09-28 44 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();