方法的输出不正确

时间:2013-01-29 03:16:13

标签: java

我正在编写的课程可以生成停放的汽车,停车计时器,警察和停车罚单。它们由一个程序演示,该程序将它们全部实例化并使它们使用。我完成了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。我似乎无法弄清楚为什么会这样。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你正在进行int划分 - 你将int除以int,这将导致int。不要这样做,并通过将它们声明为double或将分子或分母转换为double来使其中一个数字加倍。

即,

double extraFine = HOURLY_FINE * (minOver / 60.0); // note the 60.0