package payroll3;
/**
*
* @author Wiccan
*/
//employee class
public class Employee {
//fields
String name;
double rate;
double hours;
double gross;
double fedtax;
double statetax;
double deduction;
double netpay;
// constructor
public Employee(String name, double rate, double hours) {
this.name = name;
this.rate = rate;
this.hours = hours;
}
//returns net pay
public double getNetPay() {
return gross - deduction;
}
public String getName () {
return name;
}
public void setName (String name) {
this.name = name;
}
public double getHours() {
return hours;
}
public void setHours(double hours) {
this.hours = hours;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
}
public double getGross() {
return hours*rate;
}
public void setGross(double gross) {
this.gross = gross;
}
public double getFedtax() {
return fedtax*gross;
}
public void setFedtax(double fedtax){
this.fedtax = fedtax;
}
public double getStatetax() {
return statetax*gross;
}
public void setStatetax(double statetax) {
this.statetax = statetax;
}
public double getDeduction() {
return statetax+fedtax;
}
public void setDeduction (double deduction) {
this.deduction = deduction;
}
}
我基本上试图让这个类中的变量正常运行。当我用它的程序运行它时,我应该得到净支付金额。但是,当我运行它时,我获得0.00美元的金额虽然我应该得到296.00(约取决于输入)。我被告知我没有调用函数来设置值。我该怎么做呢?我尝试了许多不同的方法,并认为我做得对,但我似乎总是得到相同的输出。
答案 0 :(得分:2)
您正在使用简单的setter / getter混合方法。你有一个属性netPay,但getNetPay()不会返回它;相反,它从grossPay和扣除计算它。该计算的结果将返回给调用者,但不会保存在对象的状态中。你也有setGross(),但getGross()不会返回。
确定类的属性以及应该计算的内容。在调用getNetPay之前,您需要填充用于扣减的属性:
employee.setFederalTax(0.13);
(你缺少stateTax和fedTax来驱动其他一些计算)。然后你可以使用这些计算:
public double getNetPay() {
return getGross() - getDeductions();
}
任何计算出的东西都不应该有设定的功能。