为什么不编译,它一直给我错误

时间:2013-04-02 06:44:44

标签: java

当我编译它时,它会继续给出错误"此方法必须返回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;

    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;
          }
      }
}

5 个答案:

答案 0 :(得分:4)

您需要在条件块之外添加一个return语句 由于条件块不能保证始终执行,因此Java需要确保该方法始终按照承诺返回。

您可以执行类似

的操作
double defaultTaxRate = 0.33; // put some desired value 
if (totalHoursWorked > 40)
{  
   // All conditional blocks
}
return pay*defaultTaxRate;

答案 1 :(得分:1)

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

public int get() {
if(condition) {
return one_integer_value;
} else {
return another_integer_value;
}

答案 2 :(得分: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;
    }

答案 3 :(得分:1)

命令式语言的一个好习惯是在方法中最小化返回语句的数量。

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

它使代码更清晰,避免了这种问题。无论如何,有些情况并没有完全占用。以此作为建议而不是严格的规则,这个想法本身就会引发争论: Should a function have only one return statement?

答案 4 :(得分:0)

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