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

找零计算代码优化求助:合并重复面额输出为数量+单一面额形式

找零面额计算问题修正方案

问题:计算找零面额时,输入€135期望输出合并后的面额数量(如2x €50),但实际每次使用一张就打印一次,导致重复显示相同面额。

原代码问题点:

  • 计数变量aantal50、aantal20等放在while循环内部,每次循环都会被重置为0,无法累计数量
  • 每次循环结束就打印当前计数,导致每用一张纸币就输出一行,而不是累计后统一输出

修改后的代码:

let wisselgeld = parseInt(process.argv[2], 10);
// 把计数变量移到循环外,避免每次重置
let aantal50 = 0;
let aantal20 = 0;
let aantal10 = 0;
let aantal5 = 0;

while (wisselgeld >= 5) {
    if (wisselgeld >= 50) {
        wisselgeld -= 50;
        aantal50++;
    } else if (wisselgeld >= 20) { // 前面已经排除>=50的情况,无需额外判断<50
        wisselgeld -= 20;
        aantal20++;
    } else if (wisselgeld >= 10) { // 同理,无需判断<20
        wisselgeld -= 10;
        aantal10++;
    } else if (wisselgeld >= 5) { // 无需判断<10
        wisselgeld -= 5;
        aantal5++;
    }
}

// 循环结束后统一打印所有有数量的面额
if (aantal50 > 0) {
    console.log(`${aantal50}x €50`);
}
if (aantal20 > 0) {
    console.log(`${aantal20}x €20`);
}
if (aantal10 > 0) {
    console.log(`${aantal10}x €10`);
}
if (aantal5 > 0) {
    console.log(`${aantal5}x €5`);
}

修改说明:

  1. 将计数变量移至while循环外部,确保每次循环能持续累计对应面额的使用数量
  2. 移除循环内部的打印逻辑,改为循环结束后统一输出,避免重复打印相同面额
  3. 简化条件判断:else if会自动承接前面条件不成立的情况,比如进入else if (wisselgeld >=20)时,必然已经满足wisselgeld <50,无需额外写判断条件

输入€135时,输出结果将符合期望:

2x €50
1x €20
1x €10
1x €5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:27:38