2013-03-08 4 views
0

Я пытаюсь создать класс тестера, но при этом я получил сообщение об ошибке, которое гласит:Метод не применим для аргументов

1 error found: 

Error: The method printData(double, double) in the type PayCalculator is not 
    applicable for the arguments() 

Как я могу это исправить? Это мой тестер код

PayCalculator p1 = new PayCalculator(); 
    p1.setHourlyRate(8.25); 
    p1.setHoursWorked(45.0);  
    p1.printData(); 

мой основной код

{ 
    private double hourlyRate; 
    private double hoursWorked; 


    public PayCalculator() 
    { 
    hourlyRate = 0.0; 
    hoursWorked = 0.0; 
    } 

    /** 
    * 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(double grossPay, double tax) 
    { 
    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(grossPay)); 
    System.out.println("Net Pay: " + calculateNetPay(grossPay, tax)); 
    } 
} 
+1

Если вы посмотрите на 'printData' функции, он принимает * два * аргумента:' 'grossPay' и tax'. Однако, когда вы вызываете метод в своем тестовом коде, вы не даете ему никаких аргументов. – Th3Cuber

+2

Ваш ответ на этот вопрос уже существует в вашем предыдущем [вопросе] (http://stackoverflow.com/questions/15286505/creating-a-tester-class-for-java). Теперь вы задали один и тот же вопрос ** трижды **. ** Два раза ** из этой учетной записи и ** один раз ** из вашей [другой учетной записи] (http://stackoverflow.com/users/2121254/user2121254). – SudoRahul

ответ

2

Ну да. Вот метод декларации:

public void printData(double grossPay, double tax) 

А вот как вы пытаетесь назвать:

p1.printData(); 

Какие ценности вы ожидаете, которые будут использоваться для grossPay и tax?

Чтобы быть честным, кажется странным, что вам нужно будет пройти в grossPay, указав часы работы и почасовую ставку, но это другое дело. Самая непосредственная проблема заключается в том, что вы не предоставляете аргументы, которые требуется вашему методу.

0

Ваш метод ожидает два значения grossPay и tax:

public void printData(double grossPay, double tax) 

Но вы не обеспечивающие grossPay и tax к нему при вызове его:

p1.printData(); 

Включите значение grossPay и tax при вызове ваш метод и он будет работать нормально, как:

p1.printData(123.00,2.5); 
0

определение вашего метода является

общественных пустот PrintData (двойной grossPay, двойной налог)

он ожидает, что колл с двумя двойными аргументами в то время как вы вызываете без аргумента

p1. PrintData();

проходят двойные аргументы PrintData (44.85d, 77.56d)

Смежные вопросы