加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用双精度时if else语句的替代方法

发布时间:2020-12-15 04:42:15 所属栏目:Java 来源:网络整理
导读:根据工资,我需要为员工对象分配一个特定的税率.工资由annualSalary定义,这是一个double,所以我不能使用switch语句.我改为使用if / else: public int getSalaryRank() { if(yearlySalary = 60000.00) { salaryRank = 1; } else if(yearlySalary 60000.00 yea
根据工资,我需要为员工对象分配一个特定的税率.工资由annualSalary定义,这是一个double,所以我不能使用switch语句.我改为使用if / else:

public int getSalaryRank() {
    if(yearlySalary <= 60000.00) {
        salaryRank = 1;
    } else if(yearlySalary > 60000.00 && yearlySalary <= 80000.00) {
        salaryRank = 2;
    } else if(yearlySalary > 80000.00 && yearlySalary <= 100000.00) {
        salaryRank = 3;
    } else if(yearlySalary > 100000.00 && yearlySalary <= 125000.00) {
        salaryRank = 4;
    } else {
        salaryRank = 5;
    } return salaryRank; }

我将根据排名稍后分配税率.有没有更好的方法来写这个?

解决方法

您可以像这样简化它:

public int getSalaryRank() {
    int salaryRank;

    if(yearlySalary <= 60000.00) {
        return  1;
    } 

    if(yearlySalary <= 80000.00) {
        return 2;
    } 

    if(yearlySalary <= 100000.00) {
        return 3;
    } 

    if(yearlySalary <= 125000.00) {
       return 4;
    } 

    return 5

}

左侧的所有检查都是不必要的,因为语句按顺序执行.此外,您可以删除else语句并直接返回salaryrank.此外,当你处理钱时,永远不要使用浮点数.请改用BigDecimal

编辑:考虑到@ AlexWien关于多个退出点的评论,这可能是一个更好的解决方案:

public int getSalaryRank() {
        if(yearlySalary <= 60000.00) {
            salaryRank = 1;
        } else  if(yearlySalary <= 80000.00) {
            salaryRank = 2;
        } else if(yearlySalary <= 100000.00) {
            salaryRank = 3;
        } else if(yearlySalary <= 125000.00) {
           salaryRank = 4;
        } else {
           salaryRank = 5;
        }  

        return salaryRank;

    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读