Неверно выставляется цена за грузовые и легковые автомобили в зависимости от веса транспортного средства

 private static int passengerCarPrice = 100; // RUB
        private static int cargoCarPrice = 250; // RUB
        private static int vehicleAdditionalPrice = 200; // RUB
    
        public static void main(String[] args) {
            System.out.println("Сколько автомобилей сгенерировать?");
    
            Scanner scanner = new Scanner(System.in);
            int carsCount = scanner.nextInt();
    
            for (int i = 0; i < carsCount; i++) {
                Car car = Camera.getNextCar();
                System.out.println(car);
    
                //Пропускаем автомобили спецтранспорта бесплатно
                if (car.isSpecial) {
                    openWay();
                    continue;
                }
    
                //Проверяем высоту и массу автомобиля, вычисляем стоимость проезда
                int price = calculatePrice(car);
                if (price == -1) {
                    continue;
                }
    
                System.out.println("Общая сумма к оплате: " + price + " руб.");
            }
        }
    
        /**
         * Расчёт стоимости проезда исходя из массы и высоты
         */
        private static int calculatePrice(Car car) {
            int carHeight = car.height;
            int price = 0;
            if (carHeight > controllerMaxHeight) {
                blockWay("высота вашего ТС превышает высоту пропускного пункта!");
                return -1;
            } else if (carHeight > passengerCarMaxHeight || passengerCarMaxWeight > passengerCarMaxWeight) {
                double weight = car.weight;
                //Грузовой автомобиль
    
                if(weight > passengerCarMaxWeight)
                {
                    price = cargoCarPrice;
                    if(car.hasVehicle()) {
                        price = price + vehicleAdditionalPrice;
                    }
                }
                //Легковой автомобиль
                else {
                    price = cargoCarPrice;
                }
            }
            else {
                price = passengerCarPrice;
            }
    
        /**
         * Открытие шлагбаума
         */
        private static void openWay() {
            System.out.println("Шлагбаум открывается... Счастливого пути!");
        }
    
        /**
         * Сообщение о невозможности проезда
         */
        private static void blockWay(String reason) {
            System.out.println("Проезд невозможен: " + reason);
        }
    }

Ответы (2 шт):

Автор решения: DmitryK

Вот тут у вас условие хитрое if (... || passengerCarMaxWeight > passengerCarMaxWeight)? но на результат не влияет.
А вообще похоже вот тут ошибка, в первом else вы говорите о легковом автомобиле, а цену присваиваете грузового price = cargoCarPrice;. А должно быть вроде price = passengerCarPrice;:

                if(weight > passengerCarMaxWeight)
                {
                    price = cargoCarPrice;
                    if(car.hasVehicle()) 
                    {
                        price = price + vehicleAdditionalPrice;
                    }
                }
                // !!! Легковой автомобиль 
                else {
                    price = cargoCarPrice; // !!! а цена от грузового
                }
            }
            else {
                price = passengerCarPrice;
            }
→ Ссылка
Автор решения: DmitryK

Я бы написал функцию расчета цены вот так:

    private static int calculatePrice(Car car) {
        
        int price = 0;
        boolean isPassengerCar = true;
        
        int carHeight = car.height;
        if (carHeight > controllerMaxHeight) {
            blockWay("высота вашего ТС превышает высоту пропускного пункта!");
            return -1;
        }

        if (carHeight > passengerCarMaxHeight) {
            isPassengerCar = false;    
        }
        
        double weight = car.weight;
        if(weight > passengerCarMaxWeight) {
            isPassengerCar = false;    
        }
        
        if(isPassengerCar == true) { //Легковой автомобиль
            price = passengerCarPrice;
        }
        else { //Грузовой автомобиль
            price = cargoCarPrice;
            if(car.hasVehicle()) {
                price += vehicleAdditionalPrice;
            }
        }
        return price;
    }
→ Ссылка