Начинающий Java преобразование объекта массива в выходное строковое значение? - PullRequest
1 голос
/ 02 апреля 2020

Я кодирую, чтобы заставить работать симулятор парковочных талонов. У меня много классов, уместными являются класс ParkedCar, класс ParkingTicket и класс PoliceOfficer. Теперь я написал метод, в котором я беру переменную licensePlateNumber из ParkedCar в качестве параметра, и мне нужно получить счетчик ParkingTicket для автомобиля. Я получаю ошибку в тестовом классе, который у меня есть ниже, из-за этого он не скомпилируется. Метод следующий:

Класс PoliceOfficer

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

Тестовый класс

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"));

В самом конце я получаю сообщение об ошибке "1a2b3 c", говоря java .lang.String не может быть преобразовано в ParkedCar. Есть ли способ исправить это без использования метода переопределения строк?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2020

вы передаете строковое значение licensePlateNumber, и в методе

public int getParkingTicketsCountForACar(ParkedCar licensePlateNumber){}

вы ожидаете ввода типа ParkedCar, а затем вы извлекаете licensePlateNumber. Вы можете уменьшить метод только до:

public int getParkingTicketsCountForACar(String licensePlateNumber){
    for(ParkingTicket ticket: ticketList){
    if(licensePlateNumber.equalsIgnoreCase(ticket.getCarLicensePlateNumber())){
        numberOfTickets++
    }
    return numberOfTickets;
}
0 голосов
/ 02 апреля 2020

Вы должны либо изменить свой метод

public int getParkingTicketsCountForACar(ParkedCar licensePlateNumber){ ...

на

public int getParkingTicketsCountForACar(String carPlateNumber){ ...

и просто удалить вторую строку в методе,
ИЛИ вы Придется передать методу фактическую ParkedCar ссылку на объект.

0 голосов
/ 02 апреля 2020

Этот метод принимает тип ParkedCar

public int getParkingTicketsCountForACar(ParkedCar licensePlateNumber){}

Но вы пытаетесь передать строку

assertEquals(2,p.getParkingTicketsCountForACar("1a2B3c"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...