Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我遇到一个java构造函数错误_Java_Oop_Constructor_Bluej - Fatal编程技术网

我遇到一个java构造函数错误

我遇到一个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;

我正在通过java学习OOP。我遇到了一个错误。它发生在CarV5 car1=新CarV5car,endMiles1,startMiles1,gallons1,pricePerGallon1;的线路上;。它说CarV5类中的构造函数CarV5不能应用于给定的类型

你能纠正我的代码,使它能顺利运行吗? 你能把你编辑的完整程序寄回去吗

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个参数的构造函数。有指导意见,可以把这个问题缩小到给你带来问题的一两条线。。。