La création d'un Testeur de la Classe Java
J'ai besoin de créer une classe testeur pour mon code, mais je n'ai aucune idée sur comment faire, quelqu'un peut-il m'aider? J'ai essayé de compiler, mais j'ai ces messages:
2 erreurs trouvées:
Error: The constructor PayCalculator() is undefined
Error: The method printData() is undefined for the type PayCalculatorTester
Mon Code:
{
PayCalculator p1 = new PayCalculator();
p1.setHourlyRate(8.25);
p1.setHoursWorked(45);
printData();
}
PayCalculator Classe
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(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));
}
}
- Double Compte?
- P. S. Ma précédente réponse était incorrecte. De vérifier la nouvelle si vous n'avez pas de corriger les erreurs vous-même.
Vous devez vous connecter pour publier un commentaire.
"Le constructeur PayCalculator() n'est pas défini"
car vous avez défini le seul constructeur avec paramètres dans votre classe. Java dit que si vous fournissez votre constructeur avec paramètres par défaut du constructeur sans paramètre n'est pas fourni. Donc, vous devez fournir qu'un explicitement. Ou utilisez celui qui vous avez déclaré.
"La méthode printData() n'est pas défini pour le type PayCalculatorTester"
cette méthode est définie dans la classe
PayCalculator
donc à droite de la syntaxe devrait êtrep1.printData();
1, Si vous n'avez PAS défini de tout constructeur dans une classe, le compilateur va définir un constructeur par défaut (sans argument) pour vous implicitement. Si vous avez défini un constructeur explicite. Compilateur ne pas faire ça. Si vous ne pouvez pas utiliser le constructeur par défaut PayCalculator().
Référence: Fournir des Constructeurs pour Vos Classes
2, printData est une méthode d'instance de PayCalculator, vous avez besoin de l'invoquer à l'aide d'un PayCalculator exemple, qui est, p1.printData(). Tout comme setHourlyRate et setHoursWorked.
C'est seulement parce que votre liste de paramètres ne correspondent pas à vos méthodes de définition.
Aussi, il semble y avoir des incohérences mineures dans votre code. Essayez plutôt ceci:
C'est comment vous vous appeler le constructeur de l'objet :
PayCalculator p1 = new PayCalculator();
C'est la façon dont le constructeur est défini :
public PayCalculator(double hourlyRate, double hoursWorked);
Évidemment il va donner d'erreur .