Beginner Java converting an arraylist object to output String value?

onesnapthanos :

I am coding to get a parking ticket simulator working. I have many classes, the ones relevant are a ParkedCar class, ParkingTicket class and a policeOfficer class. Now i wrote a method where I take the licensePlateNumber variable from ParkedCar as a parameter, and I have to get the ParkingTicket count for a car. I am getting an error in the test class which i have below, it wont compile because of this. The method is as follows

PoliceOfficer class

public int getParkingTicketsCountForACar(ParkedCar licensePlateNumber){
int numberOfTickets = 0;
String carPlateNumber = licensePlateNumber.getLicensePlateNumber();
for(ParkingTicket ticket: ticketList){
if(carPlateNumber.equalsIgnoreCase(ticket.getCarLicensePlateNumber())){
numberOfTickets++
}
return numberOfTickets;
}

Test class

public void testGetParkingTicketsCountForACar() {

    PoliceOfficer p = new PoliceOfficer("Adam White","RCMP5225");
    ParkedCar car = new ParkedCar("Bob Smith", "Porsche", 2015, "1A2B3C", 65);
    ParkingMeter meter = new ParkingMeter("Burnaby",false,10.5,60);
    p.issueParkingTicket(car, meter);
    ParkedCar car2 = new ParkedCar("Scott Marks", "Ford", 2010, "MYCAR", 30);
    meter.setNumberOfPurchasedMinutes(1);
    p.issueParkingTicket(car2, meter);
    car.setNumberOfMinutesParked(125);
    meter.setNumberOfPurchasedMinutes(20);
    p.issueParkingTicket(car, meter);
    assertEquals(2,p.getParkingTicketsCountForACar("1a2B3c"));

I am getting an error at the very end "1a2b3c" saying java.lang.String cannot be converted to ParkedCar. Is there a way to fix this without using the String override method?

Alufoil :

you are passing String value of licensePlateNumber, and in the method

public int getParkingTicketsCountForACar(ParkedCar licensePlateNumber){}

you expect input of type ParkedCar, and then u you are extracting the licensePlateNumber. you can shrink the method just to:

public int getParkingTicketsCountForACar(String licensePlateNumber){
    for(ParkingTicket ticket: ticketList){
    if(licensePlateNumber.equalsIgnoreCase(ticket.getCarLicensePlateNumber())){
        numberOfTickets++
    }
    return numberOfTickets;
}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=389261&siteId=1