基于多分支/嵌套if-else的支票兑现服务费计算代码求助
支票兑现服务费计算的Java实现(多分支if-else版本)
先明确需求对应的逻辑边界(补充需求未明确的等值场景,符合常规业务逻辑):
- 金额小于10美元:固定收取1美元
- 金额大于等于10美元且小于100美元:收取金额的10%
- 金额大于等于100美元且小于1000美元:固定5美元 + 金额的5%
- 金额大于等于1000美元:固定40美元 + 金额的1%
以下是用多分支if-else实现的完整代码,包含输入校验和结果输出:
import java.util.Scanner; public class CheckCashingFeeCalculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入支票金额(美元):"); double amount = scanner.nextDouble(); scanner.close(); double fee = 0.0; // 校验金额合法性 if (amount < 0) { System.out.println("错误:金额不能为负数"); return; } // 多分支计算服务费 if (amount < 10) { fee = 1.0; } else if (amount < 100) { fee = amount * 0.1; } else if (amount < 1000) { fee = 5 + amount * 0.05; } else { fee = 40 + amount * 0.01; } // 格式化输出结果,保留两位小数 System.out.printf("支票兑现服务费为:%.2f美元%n", fee); } }
关键说明
- 边界处理:利用多分支if-else的特性,每个
else if自动承接上一个条件不成立的情况,比如else if (amount < 100)等价于amount >=10 && amount <100,避免冗余条件。 - 输入校验:增加金额负数判断,避免非法输入导致计算异常。
- 结果格式化:用
printf保留两位小数,符合货币显示规范。
如果你的代码之前失败,大概率是边界值处理错误(比如遗漏等于10、100、1000的场景),或是未处理非法输入导致的异常,可对照上述代码排查问题。
内容的提问来源于stack exchange,提问作者xiela
相关产品推荐
相关产品推荐

