2012-04-08 61 views
0

我在調用我的程序主要方法時遇到問題。調用方法時遇到問題

程序的規格如下:

setNoOfVehicles():返回擁有車輛的數量。

setWeeklyFuelCost():返回所有車輛的平均每週燃氣成本。

calcYearlyFuelCost():接收平均每週燃料成本並返回平均年燃料成本。

displayFuelCost():接收擁有的車輛數量,平均每週燃料成本和平均年燃料成本。

main()

呼叫setWeeklyFuelCost()並存儲在一個局部變量返回的值。

致電displayFuelCost(),將其作爲參數發送給setNoOfVehicles()(每週平均燃料成本的本地變量)以及致電calcYearlyFuelCost()

掃描儀是在全球範圍內

public static void main(String[] args) 
{ 

double x = setWeeklyFuelCost(); 

displayFuelCost(setNoOfVehicles(), x, calcYearlyFuelCost(x)); //This is the correct parameters I needed to pass thru displayFuelCost(). I didn't know this at the time and this is what I was trying to ask in this post. 
} 

private static int setNoOfVehicles() 
{ 

System.out.print("How many vehicles do I own? "); 
int noOfVehicles = input.nextInt(); 
return noOfVehicles; 
} 

private static double setWeeklyFuelCost() 
{ 


System.out.print("Enter the average weekly fuel cost for my vehicles: "); 
double weeklyFuelCost = input.nextDouble(); 
return weeklyFuelCost; 

} 

private static double calcYearlyFuelCost(double weeklyFuelCost) 
{ 

double yearlyFuelCost = 0.0; 
yearlyFuelCost = weeklyFuelCost * 52; 
return yearlyFuelCost; 

} 

private static void displayFuelCost(int noOfVehicles, double weeklyFuelCost, double yearlyFuelCost) 
{ 
double difference = yearlyFuelCost - 5044.00; 

if(yearlyFuelCost > 5044.00) 
{ 
System.out.printf("No of Vehicles: %d\n" 
       + "Avg Weekly Fuel Cost: $%,.2f\n" 
       + "Avg Annual Fuel Cost: $%,.2f\n\n" 
       + "I am OVER budget by $%,.2f.", noOfVehicles, weeklyFuelCost, yearlyFuelCost, difference); 
} 
else if(yearlyFuelCost < 5044.00) 
{ 
difference = difference * -1; 
System.out.printf("No of Vehicles: %d\n" 
       + "Avg Weekly Fuel Cost: $%,.2f\n" 
       + "Avg Annual Fuel Cost: $%,.2f\n\n" 
       + "I am UNDER budget by $%,.2f. PAARRTY!!! ", noOfVehicles, weeklyFuelCost, yearlyFuelCost, difference); 
} 
else 
{ 
System.out.printf("No of Vehicles: %d\n" 
       + "Avg Weekly Fuel Cost: $%,.2f\n" 
       + "Avg Annual Fuel Cost: $%,.2f\n\n" 
       + "I am RIGHT ON BUDGET!", noOfVehicles, weeklyFuelCost, yearlyFuelCost, difference); 
} 

} 

} 

最後的規範是一個抱着我聲明,呼籲displayFuelCost()

我的問題是,我不知道我需要什麼參數通過displayFuelCost()。我知道在問這個問題之前我必須使用上面的變量x。

displayFuelCost(setNoOfVehicles(), x, calcYearlyFuelCost(x));是我需要輸入的所有信息才能正常工作。

+3

具體問題是什麼? – 2012-04-08 21:21:02

+0

問題是什麼? – Bnjmn 2012-04-08 21:22:47

+0

@OliCharlesworth - 他稱它,但它不會來。 – 2012-04-08 21:24:02

回答

1

您粘貼的代碼不包含任何類定義。如果主法是在另一大類則displayFuelCost法,那麼你將不得不改變

private static void displayFuelCost(int noOfVehicles, double weeklyFuelCost, double yearlyFuelCost) 

公衆:

public static void displayFuelCost(int noOfVehicles, double weeklyFuelCost, double yearlyFuelCost) 

也就是說beeing說,我不建議你這種過度使用靜態方法。我沒有看到爲什麼你不應該使用適當的面向對象風格(或者至少是單例模式,如果它必須看起來是靜態的)。

//編輯:

IST你的這部分代碼的問題:

public static void main(String[] args) 
{ 

double x = setWeeklyFuelCost(); 

displayFuelCost(); //<-- need arguments here! 

內,您的主要功能,調用displayFuelCost法,但不提供它所需要的參數。當你看看這個方法的聲明:

private static void displayFuelCost(int noOfVehicles, double weeklyFuelCost, double yearlyFuelCost) 

}

你看,它需要3個參數:一個整數,一張雙人牀和另一雙。您必須在調用displayFuelCost函數時提供它們。例如像:

public static void main(String[] args) 
{ 

double x = setWeeklyFuelCost(); 

displayFuelCost(1, 2.5, 2.5); //<-- need parameters here! 

}

//編輯2:

有在整個代碼更多的問題。我添加了一個關於他們的新答案。

+0

我沒有粘貼那個類的定義,因爲它有我的名字和練習編號。主要的方法是在這個類中。所有主要的假設做的是: 電話setWeeklyFuelCost(),並存儲在一個局部變量返回的值,並通過發送它作爲參數傳遞給setNoOfVehicles(呼叫呼叫displayFuelCost()),爲平均每週燃料費用的局部變量,並調用calcYearlyFuelCost()。 – Abweichung 2012-04-08 21:33:28

+0

親愛的Abweichung,我仔細看了一下你的代碼,恐怕你沒有你需要的基本理解來解決你的問題!即使你修正了你發佈的特定bug,代碼也不會做你打算做的事情。你必須看看面向對象設計的基礎知識,否則你不會走得太遠。例如,由於您沒有任何已聲明的實例變量,因此您肯定無法設置或獲取它們。 – Zakum 2012-04-08 21:38:54

+0

displayFuelCost(setNoOfVehicles(),x,calcYearlyFuelCost(x));具有符合上述規格的代碼功能。 – Abweichung 2012-04-08 21:51:01

2

您可以調用方法displayFuelCost(),該方法在您的班級中未定義。相反,你有一個方法

private static void displayFuelCost(int noOfVehicles, double weeklyFuelCost, double yearlyFuelCost) { ... } 

這三個參數。

更改方法調用

displayFuelCost(1, 100.0, 5200.0); // sample values 

,以消除誤差,並得到一些結果。

0

由於我沒有掃描儀的代碼和類,我不能證明我的解決方案的工作,你也來試試吧:

public class Test { 
    public static void main(String[] args) { 

     int vehicleNumber = setNoOfVehicles(); 
     double costWeek = setWeeklyFuelCost(); 
     double costYear = calcYearlyFuelCost(costWeek); 

     displayFuelCost(vehicleNumber, costWeek, costYear); 
    } 
// rest of your code 
} 

但我再次要提醒你,這可能不是你的老師希望你提供的東西。他希望在主要方法中實例化自己的類(例如,Test test = new Test()),並使用實例端方法(即開始時沒有靜態方法)來完成任務。我會建議你再試一次。 ;)