You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中整除5的硬币面额计算是否有更简便的实现方式?

更简洁的硬币面额计算实现

当然有更清爽的实现方式!你的现有代码通过while循环逐次扣除面额来计数,逻辑是对的,但其实可以利用整数除法和取模运算来大幅简化代码,不仅更易读,计算效率也更高——毕竟不用一次次循环做减法啦。

优化后的代码

private int dollar1, cent50, cent10, cent5; 
private void calDenomination() { 
    int myCoins = 1250; 
    // 计算1美元(100分)的数量,取模得到剩余金额
    dollar1 = myCoins / 100;
    myCoins %= 100;
    
    // 计算50分硬币数量
    cent50 = myCoins / 50;
    myCoins %= 50;
    
    // 计算10分硬币数量
    cent10 = myCoins / 10;
    myCoins %= 10;
    
    // 最后剩余的金额都是5分的倍数,直接算数量
    cent5 = myCoins / 5;
}

为什么这样更优?

  • 逻辑等价:整数除法会自动向下取整,完全符合你“优先使用高面额”的需求。比如1250分,1250 / 100直接得到12个1美元硬币,剩余50分;50 / 50得到1个50分硬币,剩余0,和原代码的循环结果完全一致。
  • 代码简洁:去掉了重复的while循环结构,每一行都清晰对应一个面额的计算,可读性拉满。
  • 效率更高:尤其是当金额很大的时候,避免了大量循环减法操作,计算一步到位。
  • 易扩展:如果以后要加入新的面额(比如25分硬币),只需要插入一行cent25 = myCoins /25; myCoins %=25;即可,维护成本极低。

内容的提问来源于stack exchange,提问作者Nate Ho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:32:33