-1

所以我正在尝试计算国民保险,我正在使用 3 个 IF 语句。

/does not work
public double calculateNotContOut(){
    if (calculateWeeklyEarning()<upperEarningLevel){
        return (((calculateWeeklyEarning()-primaryThreshold)*primaryClassBetween)*52);
    }
    else {
        return (((upperEarningLevel-primaryThreshold)*primaryClassBetween+(calculateWeeklyEarning()-upperEarningLevel)*primaryClassAbove)*52);
    }
}
//does not work
public double calculateContOut(){
    if (calculateWeeklyEarning()<upperEarningLevel){
        return (((calculateWeeklyEarning()-primaryThreshold)*calculateReducedContribution())*52);
    }
    else{
        return (((upperEarningLevel-primaryThreshold)*calculateReducedContribution()+(calculateWeeklyEarning()-upperEarningLevel)*primaryClassAbove)*52);
    }
}

public double calculateNationalInsurance(){
    if (contractedOut){
        return (calculateContOut());
    }
    else {
        return (calculateNotContOut());
    }
}

它们不返回正确的值。有人可以帮忙吗?

4

2 回答 2

1

在 Java 中,如果条件只处理Boolean类型或boolean前置。

calculateWeeklyEarning()确保和的返回值是upperEarningLevel可比较的

于 2013-02-26T09:58:19.040 回答
0

检查 calculateWeeklyEarning() 返回的是否小于或等于 upperEarningLevel。if语句没有问题。

于 2013-02-26T10:00:19.210 回答