2014-12-08 41 views
-1

我正在通過java學習OOP。我遇到了一個錯誤。它發生在線路CarV5 car1 = new CarV5(car, endMiles1, startMiles1, gallons1, pricePerGallon1) ;。它表示CarV5類中的構造函數CarV5不能應用於給定的類型;我遇到了java構造函數錯誤

你能糾正我的代碼,所以它會順利運行嗎? 您可以發送完整的程序與您的編輯?

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); 
    } 
} 
+0

什麼錯誤....? – MadProgrammer 2014-12-08 01:21:06

+0

http://stackoverflow.com/help/mcve有關於修剪這個問題的指導,下面是一兩條給你帶來問題的線...... – bmike 2014-12-08 01:31:29

回答

4

你的構造函數有8個參數,而你只用5.您需要調用它要麼:

  1. 添加缺少的參數在調用構造函數。
  2. 創建一個額外的構造函數,它只有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); 
    } 
    

而且,你的endMiles1宣言應在您的主要方法中更改爲int

+0

我很困惑。你爲什麼拿走3? – 2014-12-08 01:26:27

+0

@aviparshan就像我說的,你有兩個選擇:或者添加3個缺少的參數,或者創建一個只需要5個參數的構造函數。 – 2014-12-08 01:27:52

1
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。