2014-12-04 105 views
1

我正在编写一个程序来模拟停车票系统。我共有4个不同的课程,分别是Parked Car,ParkingMeter,ParkingTicket和PoliceOfficer。在我的PoliceOfficer班上,我有一个if语句来确定警员是否应该为停放的车辆发放车票。返回一个对象的新实例

我有这样的声明:return new ParkingTicket(this,car,meter)。我收到一个不兼容的类型错误。如果我需要为我的其他课程发布我的代码,请告诉我。

停车票类别:

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

回答

1

你拿到你的论点相反。该ParkingTicket构造函数需要它的参数是:

(ParkedCar, PoliceOfficer, ParkingMeter) 

但你传递

(PoliceOfficer, ParkedCar, ParkingMeter) 

所有你需要做的是改变调用new ParkingTicket(car, this, meter)

+0

忘记我的ParkingTicket签名需要匹配时,我打电话来创建一个新的ParkingTicket对象。感谢您的快速帮助:) – Chewy 2014-12-04 16:23:15

1

你提到实例中PoliceOfficerParkingTicket(所以thisPoliceOfficer

new ParkingTicket(this,car,meter) 

我认为它应该是

new ParkingTicket(car,this,meter) 

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

相关问题