2017-09-03 41 views
-4

罚款为车辆非法停放的头一个小时或一小时内的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)); 
     } 
    } 
} 
+1

'car = null;警察=空;罚款=最低= 0;'都已经为你完成,顺便说一句......把这些在构造函数中是多余的 –

回答

0

要确保精细不会超过max_fine,你可以评估罚款后添加一个检查:

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

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

+0

这是否意味着我添加一个多后,如果在else语句?? –

+0

@diu 1997是的,你可以检查。 – nullpointer

+3

呃......他的作业又是这样吗? @ diu_1997 - 你需要在这里学习......不要求人们给你提供答案。阅读答案。明白它。应用知识。 –

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); 
}