0

我在处理这段代码时遇到了一些麻烦。这是我的 java 类的作业。它已过期,但我只是想找出问题所在。

问题:

当我将它上传到 WileyPlus(自动更正服务器)时,它一直说当 'int n = 14' 它期望结果为“24, 15”,但我得到“23, 16”。但是,当我输入 12 时,我得到了预期的结果,即“7,5”。我似乎无法找到造成这种情况的原因。

有了代码,它会更有意义。

public class RentalCar {
    private boolean rented;
    private static int availableCars = 0;
    private static int rentedCars = 0;

    public RentalCar() {
        availableCars++;
        rented = false;
    }

    public static int numAvailable() {
        return availableCars;
    }

    public static int numRented() {
        return rentedCars;
    }

    public boolean rentCar() {
        availableCars--;
        rentedCars++;
        rented = true;
        return rented;
    }

    public boolean returnCar() {
        if (rented) {
            availableCars++;
            rentedCars--;
            rented = false;
        }

        return false;
    }

    public static String check(int n) {
        RentalCar[] cars = new RentalCar[n];
        for (int i = 0; i < n; i++) {
            cars[i] = new RentalCar();
        }

        for (int i = 0; i < n; i = i + 2) {
            cars[i].rentCar();
        }

        for (int i = 0; i < n; i = i + 3) {
            cars[i].rentCar();
        }

        for (int i = 0; i < n; i = i + 4) {
            cars[i].returnCar();
        }

        return RentalCar.numRented() + " " + RentalCar.numAvailable();
    }
}
4

2 回答 2

3

returnCar()您检查中,如果您尝试归还的汽车是租用的。在rentCar()你不这样做。看来你可以租一辆已经租过的车。尽量避免租用已经租用的汽车。

于 2013-05-04T16:42:59.780 回答
0
public boolean rentCar() {
    if (!rented) {
        availableCars--;
        rentedCars++;
        rented = true;
    }
    return rented;
}

(检查车辆是否已经租用rentCar()

另外,我不明白返回值的目的,即你不妨这样做

public void rentCar() {
    if (!rented) {
        availableCars--;
        rentedCars++;
        rented = true;
    }
}
于 2013-05-04T16:45:10.693 回答