新梓生 2024-11-12 18:32 采纳率: 100%
浏览 8
已结题

Java算利润问题的else if 语句

我的else if 语句不知道错哪了😭帮我看看吧可能还有前面的错误。

img

  • 写回答

2条回答 默认 最新

  • Davina_yu 2024-11-13 09:44
    关注

    我把代码复现了一下

    public class Main {
        public static void main(String[] args) {
            int profit = 0;
            double bonus = 0;
            if (profit <= 10000) {
                bonus = profit * 0.1;
            } else if (profit <= 20000) {
                bonus = (profit - 10000) * 0.75 + 10 * 0.1;
            } else if (profit <= 40000) {
                bonus = (profit - 20000) * 0.05 + 10 * 0.1 + 10 * 0.75;
            } else if (profit <= 60000) {
                bonus = (profit - 40000) * 0.03 + 10 * 0.05 + 10 * 0.1 + 10 * 0.75;
            } else if (profit <= 100000) {
                bonus = (profit - 60000) * 0.15 + 10 * 0.05 + 10 * 0.1 + 10 * 0.75 + 10 * 0.03;
            } else {
                bonus = (profit - 100000) * 0.01 + 10 * 0.05 + 10 * 0.1 + 10 * 0.75 + 10 * 0.03;
            }
            System.out.println("提取的奖金是: " + bonus);
        }
    }
    

    这里有几个问题需要注意:

    1、在计算奖金时,10 * 0.1, 10 * 0.75, 10 * 0.05等表达式可能不是你想要的结果。这些表达式假设了每个区间的上限利润(如10000, 20000等)与下限之间的差额总是10000,但实际上应该是根据实际利润来计算的。例如,如果利润是15000,那么10 * 0.1应该被替换为10000 * 0.1。
    2、profit变量被初始化为0,这意味着如果没有从命令行参数或其它地方给profit赋值,程序总是会输出奖金为0。可能希望从外部接收profit的值,或者在代码中硬编码一个测试值。
    3、当profit大于100000时,计算公式中的10 * 0.05 + 10 * 0.1 + 10 * 0.75 + 10 * 0.03同样需要基于实际的利润区间来调整,而不是固定值。

    这是我修改后的,可以运行成功

    public class Main {
        public static void main(String[] args) {
            // 这里可以设置一个实际的利润值,或者从命令行参数获取
            int profit = 25000; // 示例利润,可以根据实际情况更改
            double bonus = 0;
    
            if (profit <= 10000) {
                bonus = profit * 0.1;
            } else if (profit <= 20000) {
                bonus = 10000 * 0.1 + (profit - 10000) * 0.75;
            } else if (profit <= 40000) {
                bonus = 10000 * 0.1 + 10000 * 0.75 + (profit - 20000) * 0.05;
            } else if (profit <= 60000) {
                bonus = 10000 * 0.1 + 10000 * 0.75 +10000 * 0.05 + (profit - 40000) * 0.03;
            } else if (profit <= 100000) {
                bonus = 10000 * 0.1 + 10000 * 0.75 + 20000 * 0.05 + 20000 * 0.03 + (profit - 60000) * 0.15;
            } else {
                bonus = 10000 * 0.1 + 10000 * 0.75 + 20000 * 0.05 + 20000 * 0.03 + 40000 * 0.15 + (profit - 100000) * 0.01;
            }
            System.out.println("提取的奖金是: " + bonus);
        }
    }  
    //  运行结果: 提取的奖金是: 8750.0
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月21日
  • 已采纳回答 11月13日
  • 创建了问题 11月12日