#java #if-statement #arraylist #compare #user-input
#java #if-оператор #arraylist #Сравнить #пользовательский ввод
Вопрос:
Я уже некоторое время пишу код структуры парковки автомобилей, и я немного застрял. Пока что у меня есть ArrayList, в который пользователь добавляет свойства транспортного средства, а также ArrayList для парковочного места с «SpaceID» и «Vehicle» из предыдущего.
Пока я могу сделать так, чтобы пользователь добавлял транспортное средство, и транспортное средство добавлялось на парковочное место, однако я создал временное парковочное место с индексом 0: и элементом (транспортное средство), равным null.
Отсюда я хотел проверить ArrayList парковочного места на «null», а затем, если он найден, заменить null на vehicle, однако я не знаю, как это реализовать. Я приложу текущий код, который я использую, или, по крайней мере, его минимальную версию.
Я уже пытался использовать метод 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");
// }
// }
Я также ищу лучший способ заполнения парковочных мест, но это не главное, просто что-то еще, если у кого-то есть какие-либо идеи
Заранее спасибо.
Комментарии:
1. Если вы хотите заменить значение null, зачем вам использовать
contains(Object o)
, которое просто возвращает aboolean
? Вы не будете знать, где в списке находится значение null, поэтому вы не будете знать, какой элемент заменить. Не кажется ли вам, что использованиеindexOf(Object o)
может быть лучшим выбором? В следующий раз, пожалуйста, проведите дополнительные исследования , т. Е. Проверьте все доступные методыList
. Вы ведь читали javadoc , верно?
Ответ №1:
Поскольку вы используете список массивов, когда элемент удаляется из него, между двумя элементами в нем не будет пустого элемента. Когда вы удаляете элемент, элементы сдвигаются. Таким образом, в случае этого кода он проверяет, меньше ли количество элементов в списке массива, чем максимальное количество автомобилей
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");
}
}
Комментарии:
1. Было бы неплохо добавить некоторое объяснение, чтобы пользователи могли легче использовать ваш ответ. ответ «только код» иногда не подходит для пользователей и его сложно понять -Обзор
2. Я новичок в stack overflow. Я хотел объяснить, но я не знал, как написать объяснение отдельно от кода
Ответ №2:
Попробуйте сделать что-то вроде этого:
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");
}