我遇到一个java构造函数错误
我正在通过java学习OOP。我遇到了一个错误。它发生在CarV5 car1=新CarV5car,endMiles1,startMiles1,gallons1,pricePerGallon1;的线路上;。它说CarV5类中的构造函数CarV5不能应用于给定的类型 你能纠正我的代码,使它能顺利运行吗? 你能把你编辑的完整程序寄回去吗我遇到一个java构造函数错误,java,oop,constructor,bluej,Java,Oop,Constructor,Bluej,我正在通过java学习OOP。我遇到了一个错误。它发生在CarV5 car1=新CarV5car,endMiles1,startMiles1,gallons1,pricePerGallon1;的线路上;。它说CarV5类中的构造函数CarV5不能应用于给定的类型 你能纠正我的代码,使它能顺利运行吗? 你能把你编辑的完整程序寄回去吗 public class CarV5 { String carType; int endMiles; int startMiles;
public class CarV5
{
String carType;
int endMiles;
int startMiles;
double gallonsUsed;
double pricePerGallon;
double costOfTrip;
double milesPerGallon;
double gallonsPerMile;
public CarV5(String type, int eMiles, int sMiles, double gals, double PPG, double TotalCost, double MPG, double GPM )
{
carType = type;
endMiles = eMiles;
startMiles = sMiles;
gallonsUsed = gals;
pricePerGallon = PPG;
costOfTrip = TotalCost;
milesPerGallon = MPG;
gallonsPerMile = GPM;
}
public int calcDistance(int sMiles, int eMiles)
{
return eMiles - sMiles;
}
public double calcMPG(int dist, double gals)
{
return dist / gals;
}
public double calcGPM(double dist, double gals)
{
return gals / dist;
}
public double totalCost(double pricePerGallon1, double gals)
{
return pricePerGallon1 * gals;
}
public static void main(String[] args)
{
int startMiles1 = 70507;
double distance1, endMiles1;
double gallons1 = 11.6;
double MilesperGallon1;
double pricePerGallon1 = 2.87;
double gallonsUsed1,GPM;
double totalCost;
String car = "07 Ford Focus";
CarV5 car1 = new CarV5(car, endMiles1, startMiles1, gallons1, pricePerGallon1) ;
distance1 = car1.calcDistance(startMiles1,endMiles1);
MilesperGallon1 = car1.calcMPG(distance1,gallons1);
totalCost = car1.totalCost(pricePerGallon1,gallons1);
System.out.printf("%60s\n","Gas Mileage Calculations");
System.out.printf("%10s%15s%15s%15s%15s%15s\n","Type of Car","Start Miles","End Miles","Distance","Gallons","Miles/Gal");
System.out.printf("===================================================================================================\n");
System.out.printf("%10s%11d%15d%15d%15f%15f\n",startMiles1,endMiles1,distance1,gallons1,MilesperGallon1);
}
}
您的构造函数接受8个参数,而您仅使用5个参数调用它。您需要: 将调用中缺少的参数添加到构造函数中。 创建仅接受5个参数的附加构造函数:
public CarV5(String type, int eMiles, int sMiles, double gals, double PPG) {
carType = type;
endMiles = eMiles;
startMiles = sMiles;
gallonsUsed = gals;
pricePerGallon = PPG;
}
您甚至可以将对象创建委托给其他构造函数:
public CarV5(String type, int eMiles, int sMiles, double gals, double PPG) {
super(type, eMiles, sMiles, gals, PPG, 0.0, 0.0, 0.0);
}
此外,在main方法中,endMiles1的声明应该更改为int
double distance1, endMiles1;
CarV5 car1 = new CarV5(car, endMiles1, startMiles1, gallons1, pricePerGallon1) ;
看起来endMiles1是一个double,而在构造函数中它只接受一个double
public CarV5(String type, int eMiles, int sMiles, double gals, double PPG, double TotalCost, double MPG, double GPM )
在构造函数上有8个参数,为什么只有5个值
这就完成了构造函数的要求
CarV5 car1 = new CarV5(car, endMiles1, startMiles1, gallons1, pricePerGallon1,totalCost,yourMPGVariable,yourGPMVariable) ;
在创建变量时始终使用camelCase规则。看看构造函数中的参数,TotalCost应该是TotalCost。我很困惑。为什么要拿走3个?@aviparshan就像我说的,你有两个选择:要么添加3个缺少的参数,要么创建一个只需要5个参数的构造函数。有指导意见,可以把这个问题缩小到给你带来问题的一两条线。。。