1

当我编译它时,它不断给出错误“此方法必须返回双精度类型的结果”,但我相信我的工资是双倍的。什么地方出了错?..................................

public double getNetPay (int totalHoursWorked) 
{ 
    int basePayRate = 15;
    double overTime = 15*1.5;
    double taxRate1 = 0.25;
    double taxRate2 = 0.21;
    double taxRate3 = 0.15;

    if (totalHoursWorked > 40)
    {
        double pay =totalHoursWorked*overTime;
        if (pay > 1200)
        {
        return pay*taxRate1;
        }
    if (pay >=500||pay <1199)
    {
            return pay*taxRate2;
        }
        if (pay <=499)
        {
        return pay*taxRate3;
        }
      }
      else
      {
          double pay =totalHoursWorked*basePayRate;
          if (pay > 1200)
          {
              return pay*taxRate1;
          }
          if (pay >=500||pay <1199)
          {
              return pay*taxRate2;
          }
          if (pay <=499)
          {
              return pay*taxRate3;
          }
      }
}
4

5 回答 5

4

您需要在条件块之外添加一个 return 语句。
由于条件块不能保证总是执行,Java 需要确保该方法总是返回所承诺的东西。

你可以做类似的事情

double defaultTaxRate = 0.33; // put some desired value 
if (totalHoursWorked > 40)
{  
   // All conditional blocks
}
return pay*defaultTaxRate;
于 2013-04-02T06:45:23.837 回答
1

当然你的工资是双倍的,但是你是从一个 if 条件中返回的。Java 编译器会给出错误,因为如果那个条件是假的,那么它就不会执行那个 return 语句,所以你必须清楚地看到在任何条件下的东西(这是双倍)必须返回。例如:

public int get() {
if(condition) {
return one_integer_value;
} else {
return another_integer_value;
}
于 2013-04-02T06:49:13.877 回答
1

您的返回类型没有问题。它的double唯一。你创造if条件的方式是错误的。这里有可能你的任何 if 条件都没有得到满足并且 return 语句没有被执行。因此编译器给出错误,你This method must return a result of type double

public double getNetPay(int totalHoursWorked) {
        int basePayRate = 15;
        double overTime = 15 * 1.5;
        double taxRate1 = 0.25;
        double taxRate2 = 0.21;
        double taxRate3 = 0.15;
        double result = 0d;

        if (totalHoursWorked > 40) {
            double pay = totalHoursWorked * overTime;
            if (pay > 1200) {
                result = pay * taxRate1;
            } else if (pay >= 500 || pay < 1199) {
                result = pay * taxRate2;
            } else if (pay <= 499) {
                result = pay * taxRate3;
            }
        } else {
            double pay = totalHoursWorked * basePayRate;
            if (pay > 1200) {
                result = pay * taxRate1;
            } else if (pay >= 500 || pay < 1199) {
                result = pay * taxRate2;
            } else if (pay <= 499) {
                result = pay * taxRate3;
            }
        }
        return result;
    }
于 2013-04-02T07:00:34.053 回答
1

命令式语言的一个好的做法是尽量减少方法中返回语句的数量。

 public int get() {
     int result = default_value;
     if(condition) {
        result = one_integer_value;
     } else if (another_condition) {
        result =  another_integer_value;
     }
     return result;
 }

它使代码更清晰,并避免了此类问题。无论如何,在某些情况下它没有被完全占用。将此作为建议而不是严格的规则,这个想法本身就会引起争论: 一个函数是否应该只有一个返回语句?

于 2013-04-02T07:01:42.277 回答
0

使用有助于找出编译时错误的 eclipse IDE 。return语句总是应该在任何块之外。避免return在一个方法中使用多个语句,而是创建一个变量并在方法结束时返回该变量。

于 2013-04-02T07:22:45.670 回答