Java调用不同类中的void方法到主类?

huangapple go评论109阅读模式
英文:

Java calling a void method in a different class to a main class?

问题

以下是翻译好的部分:

  1. // 原始的方法
  2. public ParkingTicket issueParkingTicket(ParkedCar car, ParkingMeter meter) {
  3. if (isParkingTimeExpired(car, meter) == true) {
  4. ParkingTicket ticket = new ParkingTicket(officerName, officerBadgeNumber, car.getLicensePlateNumber(), calculateFine(car, meter));
  5. ticket.displayDetails();
  6. return ticket;
  7. } else {
  8. return null;
  9. }
  10. }
  11. // 修改后的方法
  12. public void issueParkingTicket(ParkedCar car, ParkingMeter meter) {
  13. if (isParkingTimeExpired(car, meter) == true) {
  14. ParkingTicket ticket = new ParkingTicket(officerName, officerBadgeNumber, car.getLicensePlateNumber(), calculateFine(car, meter));
  15. ticketList.add(ticket);
  16. ticket.displayDetails();
  17. }
  18. }
  19. // 主驱动类
  20. public class Driver {
  21. public static void main(String[] args) {
  22. ParkedCar myCar1 = new ParkedCar("Fred", "toyota", 2013, "Z1234", 25);
  23. myCar1.displayDetails();
  24. ParkingMeter myMeter1 = new ParkingMeter("SYDNEY", true, 0.15, 70);
  25. myMeter1.displayDetails();
  26. PoliceOfficer officer1 = new PoliceOfficer("John doe", "DMX1234");
  27. officer1.issueParkingTicket(myCar1, myMeter1); // 不再有返回值
  28. // 这是你遇到错误的部分:ParkingTicket ticket = officer1.issueParkingTicket(myCar1, myMeter1);
  29. }
  30. }

请注意,我已按照你的要求仅提供代码部分的翻译,不包括其他内容。如果你还有进一步的问题或需要其他帮助,请随时提问。

英文:

I have a method to issue a parkingTicket in my officer class,

  1. public ParkingTicket issueParkingTicket(ParkedCar car,ParkingMeter meter){
  2. if(isParkingTimeExpired(car,meter) == true){
  3. ParkingTicket ticket = new ParkingTicket(officerName,officerBadgeNumber,car.getLicensePlateNumber(),calculateFine(car,meter));
  4. ticket.displayDetails();
  5. return ticket;
  6. } else
  7. { return null;
  8. }
  9. }

I was asked to modify it in a way to have it not return anything so i made it void, so I did it this way

  1. public void issueParkingTicket(ParkedCar car,ParkingMeter meter){
  2. if(isParkingTimeExpired(car,meter) == true){
  3. ParkingTicket ticket = new ParkingTicket(officerName,officerBadgeNumber,car.getLicensePlateNumber(),calculateFine(car,meter));
  4. ticketList.add(ticket);
  5. ticket.displayDetails();
  6. }

Now in my main driver class, I have to created an officer object but since I had to make the method void to not return anything I am getting an error saying void cannot be converted to ParkingTicket, if i take away myCar1,myMeter1 from the parentheses, I get an error telling me there's arguments required ParkedCar , ParkingMeter. How can I make it so I don't get an error and the officer object created can issue a parking ticket?

  1. public class Driver
  2. {
  3. main method
  4. public static void main(String [] args){
  5. ParkedCar myCar1 = new ParkedCar("Fred","toyota",2013,"Z1234",25);
  6. myCar1.displayDetails();
  7. ParkingMeter myMeter1 = new ParkingMeter("SYDNEY",true,0.15,70);
  8. myMeter1.displayDetails();
  9. PoliceOfficer officer1 = new PoliceOfficer("John doe","DMX1234");
  10. ParkingTicket ticket = officer1.issueParkingTicket(myCar1,myMeter1);

This is the source of my error ParkingTicket ticket = officer1.issueParkingTicket(myCar1,myMeter1);

答案1

得分: 2

你只需在主函数中删除以下部分:

  1. ParkingTicket ticket =

由于在函数中已创建了停车券,因此在调用函数时无需创建新的停车券。

英文:

You can just remove the part that says:

  1. ParkingTicket ticket =

in your main method.

Since the ticket is created in the function there is no need to create a new ticket when you call the function.

答案2

得分: 1

在ParkedCar中添加一个数组或列表,用于跟踪该车辆的所有罚单。

  1. public void issueParkingTicket(ParkedCar car, ParkingMeter meter)
  2. {
  3. if(isParkingTimeExpired(car, meter)){
  4. ParkingTicket ticket = new ParkingTicket(officerName, officerBadgeNumber, car.getLicensePlateNumber(), calculateFine(car, meter));
  5. car.tickets.add(ticket);
  6. }
  7. }

然后在您的主类中,您可以访问任何车辆对象的所有罚单。

  1. public static void main(String[] args)
  2. {
  3. ParkedCar car = new ParkedCar(/*params*/);
  4. Officer officer1 = new Officer(/*params*/);
  5. officer1.issueTicket(/*params*/);
  6. // 在ParkedCar类中创建一个获取罚单的方法
  7. car.getTickets();
  8. }
英文:

Add an array or List to ParkedCar that keeps track of all the tickets for that vehicle.

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

}

then in your main class you can access every ticket for any car object.

  1. public static void main(String [] args)
  2. {
  3. ParkedCar car = new ParkedCar(/*params*/);
  4. Officer officer1 = new Officer(/*params*/);
  5. officer1.issueTicket(/*params*/);
  6. //make a getter for the tickets in the ParkedCar class
  7. car.getTickets();
  8. }

答案3

得分: 0

你可以传入一张票据,并在issueParkingTicket方法内部操作该票据。

  1. ParkingTicket ticket = new ParkingTicket();
  2. officer1.issueParkingTicket(myCar1, myMeter1, ticket);
  3. ticket.displayDetails();
英文:

You can pass in a ticket, and manipulate the ticket inside the issueParkingTicket method.

  1. ParkingTicket ticket = new ParkingTicket();
  2. officer1.issueParkingTicket(myCar1,myMeter1,ticket);
  3. ticket.displayDetails();

huangapple
  • 本文由 发表于 2020年4月4日 10:39:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/61023147.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定