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

为何我的JavaScript石头剪刀布程序结果总是平局?求解决

问题分析与解决办法

嘿,我一眼就发现你代码里的问题啦!导致每次都显示平局的原因非常典型——你在判断平局的条件里用错了符号!

错误根源

你写的if (cs=ps)是赋值操作,不是比较操作。这个语句会把ps的值直接赋给cs,然后因为赋值操作的返回值就是被赋的值(只要不是undefined/null这类假值),所以这个条件永远为真,程序就只会走平局的分支,自然每次都是平局结果。

核心解决办法

把赋值符号=改成严格相等比较符===(或者宽松相等==,推荐用严格相等来避免隐式类型转换的坑),也就是把判断条件改成:

if (cs === ps) {
    html += "Its a tie!";
}

额外优化建议

另外可以加个小逻辑处理用户的无效输入,比如用户输入空值、或者不是Rock/Paper/Scissors的内容时,避免程序出错:

var player = prompt("Do you Choose Rock, Paper or Scissors?");
// 先判断输入是否有效
if (!player || !["Rock", "Paper", "Scissors"].includes(player.charAt(0).toUpperCase() + player.slice(1).toLowerCase())) {
    output.innerHTML = "请输入有效的选项:Rock、Paper或Scissors!";
} else {
    // 原来的游戏逻辑放在这里
}

修正后的完整代码

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <title>Complete Java Script Course</title> 
    <meta name="description" content=""> 
    <meta name="author" content="Yuan"> 
    <meta name="viewport" content="width=device-width; initial-scale=1.0"> 
    <link rel="shortcut icon" href="/favicon.ico"> 
    <link rel="apple-touch-icon" href="/apple-touch-icon.png"> 
</head> 
<body> 
    <div id="output">Complete Java Script Course</div> 
    <script> 
        var output = document.getElementById("output"); 
        var player = prompt("Do you Choose Rock, Paper or Scissors?");
        
        // 处理无效输入
        if (!player || !["Rock", "Paper", "Scissors"].includes(player.charAt(0).toUpperCase() + player.slice(1).toLowerCase())) {
            output.innerHTML = "请输入有效的选项:Rock、Paper或Scissors!";
        } else {
            var ps = player.charAt(0).toUpperCase(); 
            var win = false; 
            var computer = Math.random(); 
            if(computer < 0.34){
                computer ="Rock";
            } else if (computer < 0.67){
                computer ="Paper";
            } else{
                computer= "Scissors";
            } 
            var cs = computer.charAt(0).toUpperCase(); 
            console.log(computer); 
            var html=""; 
            // 这里改成严格相等比较
            if (cs === ps){ 
                html+="Its a tie!";
            } else{ 
                if(ps=="R"){ 
                    if(cs=="S"){
                        win=true;
                    } 
                } else if(ps=="P"){ 
                    if(cs=="R"){
                        win=true;
                    } 
                } else{ 
                    if(cs=="P"){
                        win=true;
                    } 
                } 
                if(win){ 
                    html += "Player Wins!"; 
                } else{ 
                    html+= "Computer Wins!"; 
                } 
            } 
            output.innerHTML = "Player Vs Computer<br>"+ player+" "+ "vs" +" "+computer+"<br>Result:"+" "+html;
        }
    </script> 
</body> 
</html>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:56:11