0

我正在编写生成停放的汽车、停车计时器、警察和停车罚单的类。它们由一个程序来演示,该程序将它们全部实例化并投入使用。我已经完成了 99% 的编程,但我在 ParkingTicket 课程中遇到了一个问题。课程中有一种方法可以根据汽车在那儿的未付时间来计算车主将为他们的汽车支付的罚款。违章停放车辆的第一小时或半小时内,基本罚款为 25.00 美元,之后每小时或半小时内额外罚款 10.00 美元。这是我的课程代码:

public class ParkingTicket{
  private ParkedCar car;
  private PoliceOfficer officer;
  private double fine;
  private int minutes;
  double BASE_FINE = 25.0;
  double HOURLY_FINE = 10.0;

  public ParkingTicket(ParkedCar aCar, PoliceOfficer anOfficer, int min){
        this.car = new ParkedCar(aCar);
        this.officer = new PoliceOfficer(anOfficer);
        this.minutes = min;

  }

  public ParkingTicket(ParkingTicket ticket2){
     this.car = ticket2.car;
     this.officer = ticket2.officer;
     this.fine = ticket2.fine;
     this.minutes = ticket2.minutes;
  }

    public void calculateFine(){
        int minOver = car.getMinutesParked() - minutes;
        int extraFine = HOURLY_FINE * (minOver / 60);
        if(minOver <= 60){
            fine = BASE_FINE;
        }
        else{
            fine = BASE_FINE + extraFine;
        }
    }

    public ParkedCar getCar(){
        return car;
    }

    public PoliceOfficer getOfficer(){
        return officer;
    }

    public int getMinutes(){
        return minutes;
    }

    public String toString(){
        return "Car Data:\n" + car +
                "\nOfficer Data:\n" + officer + 
                "\nMinutes Illegally Parked: " + (car.getMinutesParked() - minutes) +
                "\nFine: $" + fine;

    }



}

我遇到的问题是,当打印罚款时,它总是 00.00。我似乎无法弄清楚这是为什么。任何帮助将不胜感激。

4

1 回答 1

1

你正在做 int 除法——你正在用一个 int 除以一个 int,这将产生一个 int。不要这样做并通过将其中一个数字声明为 double 或将分子或分母转换为 double 来使其中一个数字加倍。

IE,

double extraFine = HOURLY_FINE * (minOver / 60.0); // note the 60.0
于 2013-01-29T03:19:00.827 回答