繁体   English   中英

在Java中,如何调用具有不同变量类型的构造函数?

[英]In Java, how to invoke a constructor with different variable types?

我想这是一个简单的问题,但是我才刚刚开始学习! :P

我需要在checkParking()网关方法中调用ParkingTicket(parker,parkee)构造函数(如果“ if”语句为true),但出现以下错误: 不兼容的类型:int无法转换为Car

public class ParkingTicket
{
  private static int count = 1000;
  private final String referenceNumber;
  private final String carLicensePlate;
  private int carMinutesParked;
  private int meterMinutesPaid;
  private static final String prefix = "V";

  private ParkingTicket(String recordedLicense, int carParkedMinutes, int meterPaidMinutes)
  {
      count = (count + 1);
      referenceNumber = prefix + count;
      carLicensePlate = recordedLicense;
      carMinutesParked = carParkedMinutes;
      meterMinutesPaid = meterPaidMinutes;
  }

  private ParkingTicket(Car parker, ParkingMeter parkee)
  {
      this(parker.getLicensePlate(),
           parker.getMinutesParked(),
           parkee.getMinutesPaid());
  }

  public static int checkParking(Car minutesParked, ParkingMeter minutesPaid)
  {
    if (minutesParked.getMinutesParked() > minutesPaid.getMinutesPaid())
    {
       new ParkingTicket(minutesParked.getMinutesParked(), minutesPaid.getMinutesPaid());       
    }
    else
    {
       ParkingTicket pt1 = null;
    }
  }
} 

在此先感谢您提供的所有帮助!

在线上

new ParkingTicket(minutesParked.getMinutesParked(), minutesPaid.getMinutesPaid());

您正在尝试使用构造函数

 private ParkingTicket(Car parker, ParkingMeter parkee)

如您所见,这需要两个参数, CarParkingMeter

您传递的参数是int

我猜您想调用第一个构造函数? 您只需要更改行以包含许可证

 new ParkingTicket(minutesParked.getLicensePlate(), minutesParked.getMinutesParked(), minutesPaid.getMinutesPaid());       

您应该使用传递构造函数期望的参数:

ParkingTicket ticket = new ParkingTicket(minutesParked, minutesPaid); 

我会更改那些变量的名称。 minutesParked是不是一个好名字CarminutesPaid是不是一个好名字ParkingMeter

PS,您可能想对创建的实例做些事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM