设定小时,直到达到最大罚款

时间:2017-09-03 05:28:35

标签: java

汽车非法停放的第一个小时或部分时间内的罚款为RM150.00。

每增加一小时或部分时间,再加RM50.00 汽车非法停放。

最高罚款应为RM300.00。

我该怎么办,如果我想设置最高罚款只是300?

public class ParkingTicket {
    private ParkedCar car;
    private PoliceOfficer police;
    private ParkingMeter meter;
    private double fine;
    private int min;
    private double firstfine = 150;
    private double hour_fine =50;
    private double max_fine = 300;

    public ParkingTicket() {
        car=null;
        police=null;
        fine=0;
        min=0;   
    }

    public void CalTotalFine() {
        int time = car.getParkMin()- meter.getMinutesPurchased();

        if(time < 60) {
            fine=firstfine;
        } else {
            fine= firstfine+ (hour_fine*(time/60));
        }
    }
}

2 个答案:

答案 0 :(得分:0)

为了确保罚款永远不会超过max_fine,您可以在评估罚款后添加支票:

if (fine > max_fine) {
    fine = max_fine;
}

并进一步使用/返回fine的值。

答案 1 :(得分:0)

fine就是你所说的计算值。因此,将其存储为字段是没有意义的。

如果您想限制它,那么您可以使用Math.min()方法。

public static final double MIN_FINE = 150;
public static final double MAX_FINE = 300;
public static final double HOURLY_RATE = 50;

public double getFine() {
    int time = car.getParkMin()- meter.getMinutesPurchased();

    double fine = 0;
    if(time < 60) {
        fine = MIN_FINE;
    } else {
        fine = MIN_FINE + (time/60)*HOURLY_RATE;
    }

    // return the smallest of these values
    return Math.min(fine, MAX_FINE);
}