Java 跟踪一个班级中租用和可用的汽车数量

Java 跟踪一个班级中租用和可用的汽车数量,java,Java,我在使用这个代码时遇到了一些问题。这是我的java类的一个作业。它已经过期了,但我只是想找出问题所在 问题: 当我把它上传到WileyPlus(自动纠错服务器)时,它一直说当int n=14时,它期望结果是“24,15”,但我得到了“23,16”。然而,当我输入12时,我得到了期望值,即“7,5”。我似乎找不到这是什么原因 有了这些代码,它就更有意义了 public class RentalCar { private boolean rented; private static

我在使用这个代码时遇到了一些问题。这是我的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();
    }
}
公共类租赁车{
私人租赁;
专用静态int availableCars=0;
私家车静态积分租赁车=0;
公共租车公司(){
可用的CARS++;
出租=假;
}
公共静态int numAvailable(){
返回可用的CARS;
}
公共静态int numreted(){
归还租车;
}
公共租赁车(){
可用卡--;
租车++;
出租=真;
归还租赁物;
}
公共汽车{
如果(租用){
可用的CARS++;
租车--;
出租=假;
}
返回false;
}
公共静态字符串检查(int n){
RentalCar[]辆车=新的RentalCar[n];
对于(int i=0;i
returnCar()
中检查您要归还的汽车是否是租来的。在
rentCar()
中,您不会这样做。看来你可以租一辆已经租了的车。尽量避免租用已经租用的汽车。

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

public boolean rentCar() {
    if (!rented) {
        availableCars--;
        rentedCars++;
        rented = true;
    }
    return rented;
}
(检查车辆是否已在
rentCar()
中租用)

另外,我不理解返回值的用途,也就是说,您也可以这样做

public void rentCar() {
    if (!rented) {
        availableCars--;
        rentedCars++;
        rented = true;
    }
}
(检查车辆是否已在
rentCar()
中租用)

另外,我不理解返回值的用途,也就是说,您也可以这样做

public void rentCar() {
    if (!rented) {
        availableCars--;
        rentedCars++;
        rented = true;
    }
}

您创建的
RentalCar
的每个实例对于
availableCars
rentedCars
都将具有相同的值@Makoto:这一部分似乎是正确的。@Makoto我想这就是重点;这是跟踪计数。@Rimshot:租车时,你不检查它是否已经租车。你创建的
RentalCar
的每个实例都会有相同的
availableCars
rentedCars
@Makoto:这部分似乎是正确的。@Makoto我想这就是重点;它是跟踪计数。@Rimshot:租车时,你不会检查车是否已经租了。也许他是想让返回值指示操作是否成功(尽管这不是它正在做的)。也许他是想让返回值指示操作是否成功(尽管它不是在做)。