Java 使用用户输入在ArrayList中创建具有多个类关联的对象

Java 使用用户输入在ArrayList中创建具有多个类关联的对象,java,Java,我想创建一个小型停车系统,它有四个类:一个用于用户输入,一个带有ArrayList(停车场)的类,维护停车位列表,一个ParkingSlot类和一个Car类 用户菜单中的一个选项是在现有停车场停车。为此,用户需要输入汽车的注册号。接下来,应该将汽车停放在停车场,并更新ArrayList 这里很难理解这些类是如何相互通信的。据我所知,用户的输入必须设置汽车登记,然后需要将其添加到停车场,然后必须将其显示在ArrayList中。 我只是不知道如何在这里设置处理用户输入的方法 应用程序类中接受汽车注册

我想创建一个小型停车系统,它有四个类:一个用于用户输入,一个带有ArrayList(停车场)的类,维护停车位列表,一个ParkingSlot类和一个Car类

用户菜单中的一个选项是在现有停车场停车。为此,用户需要输入汽车的注册号。接下来,应该将汽车停放在停车场,并更新ArrayList

这里很难理解这些类是如何相互通信的。据我所知,用户的输入必须设置汽车登记,然后需要将其添加到停车场,然后必须将其显示在ArrayList中。 我只是不知道如何在这里设置处理用户输入的方法

应用程序类中接受汽车注册的部分:

else if(选项==4){
System.out.println(“输入类型为\“A1234\”的车辆登记号”);
输入=scanner.nextLine();
如果(输入匹配项(“[A-Z][0-9][0-9][0-9][0-9][0-9]”){
//我不确定我在这里需要什么方法来将汽车添加到arrayList中的插槽中
}
否则{
System.out.println(“无效输入”);
打破
}
停车场类别:

public class Car {

    private String registrationNumber;   
    private String owner;

    public Car(String newregistrationNumber, String newOwner) {
        // Initialize instance variables
        this.registrationNumber = newregistrationNumber;
        this.owner = newOwner;
    }

    public void setRegistrationNumber(String registrationNumber)  {
        this.registrationNumber = registrationNumber;
    }
    public String getRegistrationNumber()  {
        return registrationNumber;
    }
    public void setOwner(String owner)  {
        this.owner = owner;
    }
    public String getOwner() {
        return owner;
    }
    public String toString() {
        return registrationNumber + owner;
    }
}
公共级停车场{
专用阵列列表插槽;
公众停车场(){
slots=newarraylist();
}
/**
*存放停车位
*/
public void addParkingSlot(字符串newId、字符串newType、布尔值newocculated){
停车场slotObj=新停车场(新ID、新类型、新占用);
slots.add(slotObj);
}
公共void deleteParkingSlot(字符串标识符){
Iterator it=slots.Iterator();
while(it.hasNext()){
ParkingSlot slot=it.next();
String id=slot.getId();
if(id.equals(标识符)){
if(slot.isocupied()==true){
System.out.println(“插槽已被占用,无法删除”);
}
否则{
it.remove();
}
}
}
}
公共阵列列表getParkingSlot(){
返回getParkingSlot();
}
停车场类别:

public class Car {

    private String registrationNumber;   
    private String owner;

    public Car(String newregistrationNumber, String newOwner) {
        // Initialize instance variables
        this.registrationNumber = newregistrationNumber;
        this.owner = newOwner;
    }

    public void setRegistrationNumber(String registrationNumber)  {
        this.registrationNumber = registrationNumber;
    }
    public String getRegistrationNumber()  {
        return registrationNumber;
    }
    public void setOwner(String owner)  {
        this.owner = owner;
    }
    public String getOwner() {
        return owner;
    }
    public String toString() {
        return registrationNumber + owner;
    }
}
公共级停车场{
私有字符串id;
私有字符串类型;
私有布尔staffMember=false;
私家车;
公共停车场(字符串newId、字符串newType、布尔staffMember){
this.id=newId;
this.type=newType;
this.staffMember=staffMember;
this.car=null;
}
公共无效集合id(字符串id){
this.id=id;
}
公共字符串getId(){
返回id;
}
公共void集合类型(字符串类型){
this.type=type;
}
公共字符串getType(){
返回类型;
}
公共布尔值isStaffMember(){
返回工作人员;
}
公共void集合已占用(布尔staffMember){
this.staffMember=staffMember;
}
公共布尔等占用(){
返回车!=空;
}
公共停车场(小汽车){
这辆车;
}
公共无效删除卡(){
this.car=null;
}
公共字符串toString(){
返回id+“\t”+类型+“\t”+员工成员+“\t”+车辆;
}
}
汽车类别:

public class Car {

    private String registrationNumber;   
    private String owner;

    public Car(String newregistrationNumber, String newOwner) {
        // Initialize instance variables
        this.registrationNumber = newregistrationNumber;
        this.owner = newOwner;
    }

    public void setRegistrationNumber(String registrationNumber)  {
        this.registrationNumber = registrationNumber;
    }
    public String getRegistrationNumber()  {
        return registrationNumber;
    }
    public void setOwner(String owner)  {
        this.owner = owner;
    }
    public String getOwner() {
        return owner;
    }
    public String toString() {
        return registrationNumber + owner;
    }
}

在确认您的注册号是正确的之后,您应该为汽车的所有者创建汽车对象,该对象可以存储在停车位对象中,然后从停车场类进入数组

这就是您的代码应该是什么样子

在函数addParkingSlot中,您可以只传递ParkingSlot对象

public void addParkingSlot(ParkingSlot slotObject) {
        slots.add(slotObj);
}

input.matches(“[A-Z][0-9][0-9][0-9][0-9][0-9]”
确保您的输入olny包含字母数字字符。尽管您应该删除多余的[0-9].谢谢你,问题是我已经创建了停车位,现在我需要在其中停放我正在创建的车。之后,车也应该出现在ArrayList中。那么我如何将车分配到现有的停车位呢?你只需在数组上循环。找到空的停车位(等位停车位)并使用parkingSlot(车)添加汽车。你已经创建了停车场对象,对吗?@konoship我已经更新了答案。如果它不适合你,请告诉我。