0

駐車中の車、駐車メーター、警察官、駐車違反切符を生成するクラスを作成しています。それらは、それらすべてをインスタンス化して使用するプログラムによって示されます。プログラミングは 99% 完了しましたが、ParkingTicket クラスで問題が発生しています。クラス内には、車がそこにあった未払い時間の量に基づいて、所有者が自分の車に支払う罰金を計算する方法があります。基本罰金は、車が違法に駐車された最初の 1 時間または 1 時間の一部に対して 25.00 で、その後は 1 時間または 1 時間の一部ごとに 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 になります。これを行わず、2 倍であると宣言するか、分子または分母を 2 倍にキャストすることにより、数値の 1 つを 2 倍にします。

つまり、

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