2013-03-08 68 views
-4

我正在此錯誤消息:發現在型的方法不適用於參數

2錯誤:

錯誤:在類型PayCalculator方法determineTaxRate(雙)是不適用的參數( )

錯誤:該方法calculateNetPay(雙,雙)在類型PayCalculator不適用於

你能告訴我該怎麼做才能解決這個問題的參數()?

public class PayCalculator 


{ 
    private double hourlyRate; 
    private double hoursWorked; 

    /** 
    * Two parameter constructor 
    * Add hourlyRate and hoursWorked 
    * @param the hourly rate 
    * @param the hours worked 
    */ 
    public PayCalculator(double aHourlyRate, double aHoursWorked) 
    { 
    hourlyRate = aHourlyRate; 
    hoursWorked = aHoursWorked; 
    } 

    /** 
    * sets the hourly rate 
    * @return hourlyRate 
    */ 
    public void setHourlyRate(double aHourlyRate) 
    { 
    hourlyRate = aHourlyRate; 
    } 

    /** 
    * gets the hourly rate 
    * @param hourlyRate 
    */ 
    public double getHourlyRate() 
    { 
    return hourlyRate; 
    } 

    /** 
    * sets the hours worked 
    * @return hoursWorked 
    */ 
    public void setHoursWorked(double aHoursWorked) 
    { 
    hoursWorked = aHoursWorked; 
    } 

    /** 
    * gets the hours worked 
    * @param hours worked 
    */ 
    public double getHoursWorked() 
    { 
    return hoursWorked; 
    } 



    public boolean workedOvertime() 
    { 
    if (hoursWorked > 40) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
    } 

    public double numHoursOvertime() 
    { 
    if (hoursWorked > 40) 
    { 
     return hoursWorked - 40; 
    } 
    else 
    { 
     return 0; 
    } 
    } 

    public double calculateGrossPay() 
    { 
    if (hourlyRate <= 10.25) 
    { 
     if (hourlyRate <= 40) 
     return hourlyRate * hoursWorked; 
    } 
    else 
    { 
     double grossPay = ((40 * hourlyRate) + ((hourlyRate * 2) * hoursWorked - 40)); 
     return grossPay; 
    } 

    if (hoursWorked <= 60) 
    { 
     return hourlyRate * hoursWorked; 
    } 
    else 
    { 
     return 60 * hourlyRate; 
    } 
    } 

    public double determineTaxRate(double grossPay) 
    { 
    if (grossPay >= 800) 
    { 
     double tax = 0; 
     tax = grossPay * 0.37; 
     return tax; 
    } 
    else if (grossPay >= 400) 
    { 
     double tax = 0; 
     tax = grossPay * 0.22; 
     return tax; 
    } 
    else 
    { 
     double tax = 0; 
     tax = grossPay * 0.12; 
     return tax; 
    } 
    } 

    public double calculateNetPay(double grossPay, double tax) 
    { 
    double calculateNetPay = grossPay - tax; 
    return calculateNetPay; 
    } 

    public void printData() 
    { 
    System.out.println("Hours Worked: " + hoursWorked); 
    System.out.println("Hourly rate: " + hourlyRate); 
    System.out.println("Number of hours of overtime worked: " + numHoursOvertime()); 
    System.out.println("Worked overtime? " + workedOvertime()); 
    System.out.println("Gross pay: " + calculateGrossPay()); 
    System.out.println("Tax Rate: " + determineTaxRate()); 
    System.out.println("Net Pay: " + calculateNetPay()); 
    } 

} 

回答

3

要調用

determineTaxRate() 

但你的方法被定義爲這樣的:

public double determineTaxRate(double grossPay) 
{ 

同樣的,你的其他錯誤。您需要將double傳遞給該方法。像這樣的:

determineTaxRate(calculateGrossPay()) 
1

您還沒有指定的參數,而您是從printData()方法調用的方法,例如:

System.out.println("Net Pay: " + calculateNetPay()); 

要調用calculateNetPay() 0參數,其中作爲你你指定的方法定義,它需要2個雙重參數。

public double calculateNetPay(double grossPay, double tax) { ... } 

同樣適用於您正在獲取的其他錯誤。

1

你的方法用一個參數定義,但你沒有傳遞任何參數。

對於計算網絡支付()你也在做同樣的事情。

1

你已經宣佈你這樣的方法:

public double determineTaxRate(double grossPay) 

後來調用它是這樣的:

determineTaxRate() 

很明顯,你調用方法

修復這個時候錯過了參數通過determineTaxRate(someDoubleVar)

+0

我將此添加到打印數據? – user2121254 2013-03-08 03:23:54

+0

到您調用此方法的任何位置,例如:System.out.println(「Tax Rate:」+ determineTaxRate(someDoubleVar)); – leeon 2013-03-08 06:22:52

相關問題