编写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
相关产品推荐
相关产品推荐

