Java вызывать метод void в другом классе для основного класса? - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть метод выдачи парковочного талона в классе моего офицера,

public ParkingTicket issueParkingTicket(ParkedCar car,ParkingMeter meter){

        if(isParkingTimeExpired(car,meter) == true){
          ParkingTicket ticket = new ParkingTicket(officerName,officerBadgeNumber,car.getLicensePlateNumber(),calculateFine(car,meter));
          ticket.displayDetails();


          return ticket;
            } else
             { return null;
    }           
   }

Меня попросили изменить его так, чтобы он ничего не возвращал, поэтому я сделал его недействительным, поэтому я сделал это таким образом

 public void issueParkingTicket(ParkedCar car,ParkingMeter meter){

        if(isParkingTimeExpired(car,meter) == true){
          ParkingTicket ticket = new ParkingTicket(officerName,officerBadgeNumber,car.getLicensePlateNumber(),calculateFine(car,meter));

          ticketList.add(ticket);
          ticket.displayDetails();
    }

Теперь в моем главном классе драйверов мне нужно создать объект Officer, но, поскольку мне пришлось сделать метод void, чтобы ничего не возвращалось, я получаю сообщение об ошибке, в котором void нельзя преобразовать в ParkingTicket, если я уберу myCar1,myMeter1 из скобок, я получаю ошибку, сообщающую, что требуются аргументы ParkedCar, ParkingMeter. Как я могу сделать так, чтобы я не получил ошибку, и созданный объект офицера мог выдать парковочный талон?

 public class Driver
{
    main method
    public static void main(String [] args){

ParkedCar myCar1 = new ParkedCar("Fred","toyota",2013,"Z1234",25);
    myCar1.displayDetails();

    ParkingMeter myMeter1 = new ParkingMeter("SYDNEY",true,0.15,70); 
    myMeter1.displayDetails();


    PoliceOfficer officer1 = new PoliceOfficer("John doe","DMX1234"); 
    ParkingTicket ticket = officer1.issueParkingTicket(myCar1,myMeter1); 

Это источник моей ошибки ParkingTicket ticket = officer1.issueParkingTicket(myCar1,myMeter1);

Ответы [ 3 ]

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

Вы можете просто удалить часть, которая говорит:

ParkingTicket ticket = 

в вашем основном методе.

Поскольку заявка создается в функции, нет необходимости создавать новую заявку, когда Вы вызываете функцию.

1 голос
/ 04 апреля 2020

Добавьте массив или список в ParkedCar, который отслеживает все билеты на этот автомобиль.

public void issueParkingTicket(ParkedCar car, ParikingMeter meter)
{
   if(isParkingTimeExpired(car,meter) == true){
      ParkingTicket ticket = new ParkingTicket(officerName,officerBadgeNumber,car.getLicensePlateNumber(),calculateFine(car,meter));
  car.tickets.add(theTicket);

}

, тогда в вашем основном классе вы можете получить доступ к каждому билету на любой автомобиль объект.

public static void main(String [] args)
{
  ParkedCar car = new ParkedCar(/*params*/);
  Officer officer1 = new Officer(/*params*/);
  officer1.issueTicket(/*params*/);

  //make a getter for the tickets in the ParkedCar class
  car.getTickets();
}
0 голосов
/ 04 апреля 2020

Вы можете передать билет и манипулировать им в методе IssueParkingTicket.

ParkingTicket ticket = new ParkingTicket();
officer1.issueParkingTicket(myCar1,myMeter1,ticket); 
ticket.displayDetails();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...