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

JavaScript switch/case小费计算代码始终输出2zł小费问题排查

问题定位
  • switch语句用法错误:JS中switch会将switch(表达式)的结果和每个case后的值做全等匹配。你当前switch后传入的是账单数值,case后是布尔类型的条件判断结果,两者类型不匹配,无法正常触发对应分支逻辑。如果要通过switch做范围判断,需要改为switch(true),才能匹配case返回的布尔结果。
  • 小数分隔符错误:JS中小数的分隔符为英文点.,你代码中写的0,15、0,2会被解析为逗号运算符,直接返回最后一个表达式的值15、2,同时逗号会被识别为console.log的参数分隔符,最终小费金额会固定为2 zł,就是你遇到的异常现象的直接原因。
  • 分支条件逻辑错误:第二个case的判断条件rachunek < 50 && rachunek > 300永远不可能成立,一个数值无法同时满足小于50且大于300,需要改为逻辑或||。
  • 输入类型未转换:prompt的返回值为字符串类型,直接参与数值运算可能出现隐式转换异常,需要先显式转为数字类型。
修复方案

修复后的完整代码如下:

// 将prompt返回的字符串显式转为数字类型
let rachunek = Number(prompt('Podaj cene rachunek'));
    
// switch传入true,匹配case后的布尔判断结果
switch(true) {
    case rachunek >=50 && rachunek <= 300:
        // 小数用英文点作为分隔符
        console.log('Cena rachunku wynosi ' + rachunek + ' zł ' + 'natomiast napiwek wynosi' + rachunek * 0.15 + ' zł');
        break;
    // 条件改为逻辑或,覆盖小于50或大于300的场景
    case rachunek < 50 || rachunek > 300:
        console.log('Cena rachunku wynosi ' + rachunek + ' zł ' +'natomiast napiwek wynosi' + rachunek * 0.2 + ' zł');
        break;

    default:
        console.log('Złe dane');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:24:03