Как мне найти ноль в этом ArrayList, а затем заменить его другим объектом? - PullRequest
0 голосов
/ 21 апреля 2019

Я уже некоторое время пишу код структуры автомобильной парковки, и я немного застрял. До сих пор у меня есть ArrayList, который пользователь добавляет свойства Vehicle, а также ArrayList для парковки с «SpaceID» и «Vehicle» из ранее.

Пока что я могу сделать так, чтобы пользователь добавил транспортное средство, и транспортное средство было добавлено к парковочному месту. Однако я сделал временное парковочное место с индексом 0: и элементом (транспортным средством), являющимся нулем.

Отсюда я хотел проверить ArrayList на парковочном месте на «null», а затем, если он найден, заменить null на транспортное средство. Однако я не знаю, как это осуществить. Я приложу текущий код, который я использую, или, по крайней мере, его минимальную версию.

Я уже пытался использовать метод Contains (null), но я не могу заставить его работать должным образом, я не уверен, что он вообще может работать, но с тех пор я удалил его из своего кода.

Прежде всего, у меня есть функция для создания транспортного средства и сохранения его в массиве.

```
public void carInfo(Vehicle tempVehicle, parkingSpace vehicle) {

    array = new MCP();

    System.out.println("Please enter number plate: ");
    input = new Scanner(System.in);
    String plate = input.nextLine();

    System.out.println("Please enter car make: ");
    input = new Scanner(System.in);
    String make = input.nextLine();

    System.out.println("How would you best describe your Vehicle? ");
    System.out.println("(Car, Small Van, Tall Van, Long Van, Coach, 
    Motorbike)");
    type = new Scanner(System.in);
    String type1 = input.nextLine();

    if (type1.equalsIgnoreCase(vehicleType.CAR.toString())) {
        tempVehicle.setPlate(plate);
        tempVehicle.setCarMake(make);
        tempVehicle.setVehicle(vehicleType.CAR);
        inv.createInvoice();
        tempVehicle.setInvoiceNumber(inv.invoiceNumber);

        array.addStandard(tempVehicle);
        array.parkVehicle(vehicle);

        System.out.println(tempVehicle.toString());
        System.out.println(vehicle.toString()); 
```

У меня также есть свои массивы, которые находятся в другом классе.

```
    public MCP(){
       vehicles = new ArrayList<>();
       parkingSpaces = new ArrayList<>();

       parkingSpaces.add(0, null);
       parkingSpaces.add(1, null);

     }


    public void addStandard(Vehicle tempVehicle) {
       vehicles.add(tempVehicle);
     }

     public void parkVehicle(parkingSpace vehicle) {
       parkingSpaces.add(vehicle);
     }
```

Вот так я пытался это сделать, но я не мог найти выход, поэтому я остановился, я тоже открыт для любых других способов. // public void checkIfEmpty(parkingSpace vehicle){ // if(parkingSpaces.contains(null)){ // parkingSpaces.add(vehicle); // } // else{ // System.out.println("There is no room in this Zone"); // } // }

Я также ищу лучший способ заселения парковочных мест, но это не главная проблема, просто что-то еще, только если у кого-то есть какие-то идеи

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Поскольку вы используете список массивов, при удалении из него элемента между двумя элементами не будет пустого элемента.Когда вы удаляете элемент, элементы сдвигаются.Таким образом, в случае этого кода он проверяет, меньше ли количество элементов в списке массивов, чем максимальное количество машин

int maxSize = 10; //suppose that the maximum number of cars is 10
        public void checkIfEmpty(parkingSpace vehicle){
                if(parkingSpaces.size() < maxSize){
                    parkingSpaces.add(vehicle);
                }
                else{
                    System.out.println("There is no room in this Zone");
                }
            }
0 голосов
/ 21 апреля 2019

Попробуйте сделать что-то вроде этого:

public void checkIfEmpty(parkingSpace vehicle) {
    boolean addedVehicle = false;
    for (int i = 0; i < parkingSpaces.size(); i++){
        if (parkingSpaces.get(i) == null) {
            parkingSpaces.add(vehicle);
            addedVehicle = true;
            break;
        }
    }

    if (!addedVehicle)
        System.out.println("There is no room in this Zone");
}
...