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

石头剪刀布游戏每次判定电脑获胜,请求排查代码错误

石头剪刀布游戏胜负判定错误排查

问题核心是playRound函数的运算符优先级错误,导致所有非平局场景都判定电脑获胜。

错误原因

JavaScript中逻辑或||的优先级低于三元运算符?:,你原函数的代码会被错误解析:

return ((computerSel === playerSel) ? "It's a Tie" : (computerSel === "rock" && playerSel === "scissors")) || 
((computerSel === "paper" && playerSel === "rock") || (computerSel === "scissors" && playerSel === "paper")) ? "Computer" : "Player";

只要不是平局,前面的条件表达式会被转为布尔值true,最终触发返回"Computer"的分支。

修正方案

将电脑获胜的所有条件用括号包裹,确保三元运算符的分支逻辑正确:

function playRound(computerSel, playerSel) {
    return (computerSel === playerSel) ? "It's a Tie" :
        ((computerSel === "rock" && playerSel === "scissors") ||
         (computerSel === "paper" && playerSel === "rock") ||
         (computerSel === "scissors" && playerSel === "paper")) ? "Computer" : "Player";
}

更易读的优化版本

也可以改用if-else结构,避免运算符优先级问题,逻辑更清晰:

function playRound(computerSel, playerSel) {
    if (computerSel === playerSel) {
        return "It's a Tie";
    }
    // 直接判断玩家获胜的情况
    const playerWins = 
        (playerSel === "rock" && computerSel === "scissors") ||
        (playerSel === "paper" && computerSel === "rock") ||
        (playerSel === "scissors" && computerSel === "paper");
    return playerWins ? "Player" : "Computer";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:50:21