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

我把代码复现了一下
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