我的类(class)中有三门课。 Ship.java
、Cabin.java
和 Passenger.java
。根据该计划,单个客舱最多只能容纳 3 名乘客。但我一直不知道如何做到这一点。我在我的 Ship.java
类中创建了一个小屋对象数组。我只能使用下面提到的 addCustomer
方法将一名乘客添加到客舱
Cabin[] cruiseShip = new Cabin[12];
for (int i = 0; i < cruiseShip.length; i++) {
cruiseShip[i] = new Cabin();
}
public static void addCustomer(Cabin[] cruiseShip, String firstName, String surName, int expenses, int cabinNumber){
if (cruiseShip[cabinNumber].getCabinName().equals("empty")){
cruiseShip[cabinNumber].setFirstName(firstName);
cruiseShip[cabinNumber].setSurName(surName);
cruiseShip[cabinNumber].setExpenses(expenses);
cruiseShip[cabinNumber].setCabinName("not empty");
System.out.println("Cabin number " + cruiseShip[cabinNumber].getCabinNumber() + " is occupied by " + cruiseShip[cabinNumber].getFirstName() + " " + cruiseShip[cabinNumber].getSurName() );
}
}
这就是Cabin.java
的样子:
public class Cabin extends Passenger {
int cabinNumber;
String cabinName;
public String getCabinName() {
return cabinName;
}
public void setCabinName(String cabinName) {
this.cabinName = cabinName;
}
public int getCabinNumber() {
return cabinNumber;
}
public void setCabinNumber(int cabinNumber) {
this.cabinNumber = cabinNumber;
}
}
这就是 Passenger.java
的外观:
public class Passenger {
String firstName;
String surName;
int expenses;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSurName() {
return surName;
}
public void setSurName(String surName) {
this.surName = surName;
}
public int getExpenses() {
return expenses;
}
public void setExpenses(int expenses) {
this.expenses = expenses;
}
}
最佳答案
Cabin
应该包含一个容纳乘客的数据结构。(关联 1-n,来自 1_cabin-N_passengers)您还可以限制数量。与客舱类型相关的乘客数量(最多 2-3-n 名乘客),并检查在特定时间内不要在同一客舱中添加 n 次相同的乘客。与 Ship
相同的逻辑其中有Cabins
.
class Cabin
{
... etc ... as u did
List<Passenger> listP = new ArrayList<Passenger>();
}
listP.add(new Passenger(...));
class Ship
{
...
List<Cabin> listC = new ArrayList<Cabin>();
}
listC.add(new Cabin(...));
//get a specific cabin from the ship and add a new Passenger
//note maybe it's better to do your custom methods for add,get_Ship, Cabin (based on the requiremts).
//Standard List Methods usually do not fit exactly custom requirements, so need to be enhanced
ship.getlistC().get(i_specificCabin).listP.add(new Passenger(...));
小心不要混淆语义,思考现实世界中事物是如何工作的(参见@Jim Garrison)。
注意:也许是Map<String/Integer,CustomObject>
非常适合基于 key(id) 的轻松访问。
关于java - 如何在舱位内仅容纳多名乘客?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71491781/