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

Northcoders switch语句挑战遇问题:2个测试用例未通过求助

问题分析与修复方案

问题根源

你的代码存在两个核心问题导致测试失败:

  1. 变量初始值未定义:let greeting;只声明了变量但未赋值,当传入的时间既不满足0<=time<12也不满足12<=time<24(比如time=-1或者time=25)时,greeting会保持undefined,但题目要求这类场景必须返回null。
  2. 时间逻辑覆盖不全:你在每个case里只处理了time>=24的情况,但完全没考虑time<0的无效时间,而且独立的if语句会导致逻辑分支混乱,比如当time=-1时,所有if条件都不触发,最终返回undefined。

修复后的代码

function sayHello(country, time) {
    let greeting = null; // 初始赋值为null,默认返回符合要求的无效值
    
    // 先判断时间是否有效,无效直接返回null
    if (time >= 0 && time < 24) {
        switch (country) {
            case 'Spain':
            case 'Mexico':
                greeting = time < 12 ? 'buenos dias' : 'buenas noches';
                break;
            case 'France':
                greeting = time < 12 ? 'bon matin' : 'bon soir';
                break;
            // 其他国家保持greeting为null
        }
    }
    // 时间无效时,greeting已经是null,无需额外处理
    
    // Don't change code below this line
    return greeting;
}

修改说明

  1. 初始值赋值:一开始就把greeting设为null,确保所有不符合条件的场景(无效时间、非指定国家)都默认返回null。
  2. 逻辑分层:先判断时间是否在有效范围[0,24)内,无效的话直接跳过后续分支,保持greeting为null。
  3. 简化重复代码:把Spain和Mexico的逻辑合并,用三元运算符简化问候语的判断,减少冗余代码。
  4. 完整覆盖场景:不管是time<0还是time>=24,都会返回null,满足题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:22:42