首页 > 解决方案 > Java:Payroll 类的决策结构中的返回语句?

问题描述

我必须创建一个名为 Payroll 的类和一个 PayrollDemo 类来配合它。

到目前为止,这是我的薪资类代码:

public class Payroll {
   private double hoursWorked, payRate;

   public Payroll() {
   hoursWorked = 0.0;
   payRate = 0.0;
}

public void setHoursWorked(double hours) {
hoursWorked = hours;
}

public void setPayRate(double rate) {
 payRate = rate;
}

public double getHoursWorked() {
return hoursWorked;
 }

public double getPayRate() {
return payRate;
}

public String calcPay() {
if (hoursWorked <= 40) {
  double grossPay = hoursWorked * payRate;

  System.out.println("Regular Pay\n============\nHours: " + getHoursWorked() + "\nRate: $" + getPayRate() + "Gross Pay = $" + grossPay);

} else if (hoursWorked > 40) {
    double grossPay = (40 * payRate) + ( (hoursWorked - 40) * payRate * 1.5 );

    System.out.println("Pay With Overtime\n=================\nHours: " + getHoursWorked() + "\nRate: $" + getPayRate() + "Regular Pay = $" + (40 * payRate) + "\nOvertime Hours = " + (hoursWorked - 40) + "\nOvertime Pay Rate = $" + (payRate * 1.5) + "Overtime Pay = $" + ( (hoursWorked - 40) * payRate * 1.5 ) + "Gross Pay = $" + grossPay);
 }
}  
}

问题是我收到一个错误:缺少返回语句。我尝试用 return 替换这两个 Println ,但这没有用。所以我只是想知道如何修复程序。

标签: javaif-statementreturn

解决方案


您需要一个默认返回值。编译器需要知道无论如何都会返回某些东西 -else if即使您可能知道逻辑是合理的,它也不“喜欢”。

但是,您可以这样做:

if (hoursWorked <= 40) {
  // return something
} else {
  // return something
}

或者如果你想保留你的 else-if:

if (hoursWorked <= 40) {
  // return something
} else if (hoursWorked > 40) {
  // return something
}

return defaultString;

推荐阅读