返回一个对象的新实例

时间:2014-12-04 16:03:12

标签: java object

我正在编写一个模拟停车罚单系统的程序。我总共有4个不同的课程,分别是ParkedCar,ParkingMeter,ParkingTicket和PoliceOfficer。在我的PoliceOfficer课上,我有一个if声明,以确定警察是否应该为停放的汽车签发机票。

我有以下声明要做:返回新的ParkingTicket(这,车,米)。我得到一个不兼容的类型错误。如果我需要为其他课程发布我的代码,请告诉我。

停车票类:

import java.text.DecimalFormat;

public class ParkingTicket {
private static int ticketCount;
private ParkedCar car;
private PoliceOfficer officer;
private ParkingMeter meter;
private double fine;

public final double BASE_FINE = 25.0;
public final double HOURLY_FINE = 10.0;

public ParkingTicket (ParkedCar aCar, PoliceOfficer anOfficer, ParkingMeter aMeter) {
    this.car = aCar;
    this.officer = anOfficer;
    this.meter = aMeter;

    calculateFine();
}


public void calculateFine() {
   // Calculate fine & increment ticket count
   ++ticketCount;

   int timeOver = (int)Math.ceil((car.getMinutesParked() - meter.getMinutesPurchased() / 60.0));
   fine = BASE_FINE * HOURLY_FINE * (timeOver - 1);
}

public String toString() {
    DecimalFormat newDecimal = new DecimalFormat("$###.00");
    return "Ticket Number: " + ticketCount + "\n" +
            car + "\n" + meter + "\n" + "Fine: " + newDecimal.format(fine) + "\n" 
            + officer;
}
}

警务人员班级:

public class PoliceOfficer {
// Declare data fields
private String name;
private String badgeNumber;

// Default constructor 
public PoliceOfficer (String name, String badgeNumber) {
    this.name = name;
    this.badgeNumber = badgeNumber;
}

// Copy of PoliceOfficer
public PoliceOfficer (PoliceOfficer OfficerCopy) {
    this.name = OfficerCopy.name;
    this.badgeNumber = OfficerCopy.badgeNumber;
}

// Class to check a parked car and determine if the 
// cars time has expired
public ParkingTicket check(ParkedCar car, ParkingMeter meter) {

if (car.getMinutesParked() > meter.getMinutesPurchased()) {
    // Creating a new object of ParkingTicket object
    return new ParkingTicket(this,car,meter);
 } else {
    return null;
 }
}

// toString class
public String toString() {
  return "Officer Name: " + name + "/n" + "Badge ID: " + badgeNumber;
}
}

2 个答案:

答案 0 :(得分:1)

您提及在ParkingTicket中实例化PoliceOfficer(因此thisPoliceOfficer

new ParkingTicket(this,car,meter)

我认为应该是

new ParkingTicket(car,this,meter)

因为构造函数签名是ParkingTicket(ParkedCar, PoliceOfficer, ParkingMeter)

答案 1 :(得分:1)

你刚刚反驳了你的论点。 ParkingTicket构造函数需要其参数为:

(ParkedCar, PoliceOfficer, ParkingMeter)

但你传递

(PoliceOfficer, ParkedCar, ParkingMeter)

您需要做的就是将呼叫更改为new ParkingTicket(car, this, meter)

相关问题