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

编写Odds and Evens游戏时while循环陷入无限循环的求助

问题分析与解决

核心问题:逻辑运算符使用错误

你的while循环条件误用了||(逻辑或),这会导致无论输入什么值,循环条件永远为真。比如输入'odds'时,它确实不等于'Odds'、'evens'、'Evens',只要满足其中一个!=条件,||就会返回true,循环无限执行。

正确逻辑应该使用&&(逻辑与),表示只有当输入同时不匹配所有四个正确值时,才触发循环提示用户重新输入。

修正后的代码

var oddEven = prompt('Would you like to be odds or evens?', 'Odds');
while (oddEven !== 'odds' && oddEven !== 'Odds' && oddEven !== 'evens' && oddEven !== 'Evens') {
    oddEven = prompt('Please enter either odds or evens');
}

新手友好的进阶优化建议

  • 统一大小写简化判断:把用户输入转成小写(或大写),不用重复判断多种大小写形式,代码更简洁:
    var oddEven = prompt('Would you like to be odds or evens?', 'Odds').toLowerCase();
    while (oddEven !== 'odds' && oddEven !== 'evens') {
        oddEven = prompt('Please enter either odds or evens').toLowerCase();
    }
    
  • 优先用!==替代!=:严格不等运算符能避免类型转换带来的意外问题,是更安全的写法。
  • 处理用户取消输入的情况:如果用户点击取消,prompt会返回null,可以加入判断避免后续出错:
    var oddEven = prompt('Would you like to be odds or evens?', 'Odds');
    while (oddEven === null || (oddEven.toLowerCase() !== 'odds' && oddEven.toLowerCase() !== 'evens')) {
        if (oddEven === null) {
            alert('You cancelled the selection!');
            oddEven = prompt('Would you like to be odds or evens?', 'Odds');
        } else {
            oddEven = prompt('Please enter either odds or evens');
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:05:17