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

睡眠债务计算器:为何单数/复数小时判断函数失效?

睡眠债务计算器:单数/复数术语判断问题解决

我在完成Codecademy的睡眠债务计算器项目时,遇到一个问题:需要实现逻辑——当睡眠债务值为1时返回单数术语hour,其他情况返回复数术语hours,但最初的代码始终返回hours。

初始问题代码片段

负责判断术语的代码如下:

const SleepDebt = idealSleepHours - actualSleepHours;
console.log(SleepDebt);
let time = '';
const SleepHourFunction = () => {
    if (SleepDebt > 1) {
        return time = ("hours");
    } else if (SleepDebt < 1) {
        return time = ("hours");
    } else if (SleepDebt == 1) {
        return time = ("hour");
    } else {
        return 'error';
    }
}
SleepHourFunction();

问题根源:当实际睡眠比理想多1小时时,SleepDebt的值为-1,此时会触发SleepDebt < 1的条件,直接返回hours,但实际输出的是“多睡了1小时”,数值为1,应该使用单数hour。

修复后的代码

调整条件判断,将-1也纳入单数术语的判断范围:

if (SleepDebt > 1) {
    return time = ("hours");
} else if (SleepDebt === 1 || SleepDebt === -1) {
    return time = ("hour");
} else if (SleepDebt < 1) {
    return time = ("hours");
} else {
    return 'error';
}
SleepHourFunction();

完整项目代码

const getSleepHours = (day) => {
    switch (day) {
        case "monday":
            return 6;
            break;
        case "tuesday":
            return 7;
            break;
        case "wednesday":
            return 9;
            break;
        case "thursday":
            return 8;
            break;
        case "friday":
            return 9;
            break;
        case "saturday":
            return 10;
            break;
        case "sunday":
            return 8;
            break;
        default:
            console.log("Error");
    }
};

console.log(getSleepHours("sunday")); // 预期输出周日对应的睡眠时间

const getActualSleepHours = () => {
    const totalHours =
        getSleepHours("monday") +
        getSleepHours("tuesday") +
        getSleepHours("wednesday") +
        getSleepHours("thursday") +
        getSleepHours("friday") +
        getSleepHours("saturday") +
        getSleepHours("sunday");
    return totalHours;
};

const getIdealSleepHours = (idealHours) => idealHours * 7;

const calculateSleepDebt = () => {
    const actualSleepHours = getActualSleepHours();
    const idealSleepHours = getIdealSleepHours(8);

    const SleepDebt = idealSleepHours - actualSleepHours;
    console.log(SleepDebt);
    let time = '';
    const SleepHourFunction = () => {
        if (SleepDebt > 1) {
            return time = ("hours");
        } else if (SleepDebt === 1 || SleepDebt === -1) {
            return time = ("hour");
        } else if (SleepDebt < 1) {
            return time = ("hours");
        } else {
            return 'error';
        }
    }
    SleepHourFunction();

    if (actualSleepHours == idealSleepHours) {
        console.log("你的睡眠时间刚刚好,继续保持!");
    } else if (actualSleepHours > idealSleepHours) {
        console.log(
            "你的睡眠时间超标了,多睡了" + -SleepDebt + " " + time + "。"
        );
    } else if (actualSleepHours < idealSleepHours) {
        console.log(
            "你需要更多睡眠,赶紧休息一下。你少睡了" + SleepDebt + " " + time + "。"
        );
    } else {
        console.log("错误");
    }
};

calculateSleepDebt();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:30:49