当我编译它时,它会继续给出错误"此方法必须返回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;
}
}
}
答案 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
语句,而是创建一个变量并在方法的末尾返回该变量。