JavaScript中do while与prompt实现正确输入终止的代码修正请求
修正后的代码及问题解析
问题代码的错误点
- 变量引用错误:
if条件里使用了prompt(函数名)而非存储输入值的变量house,导致条件判断完全失效。 - 逻辑或写法错误:
|| 'Ravenclaw'这种写法会被解析为布尔值true(非空字符串为真值),无论输入是什么,这个条件永远成立。 - 多余的分号:
if语句末尾的分号会让后续的house = prompt(...)脱离条件控制,不管输入是否正确都会执行。 - 逻辑流程混乱:每次循环都先显示初始提示,再强制显示错误提示,导致输入错误后无法持续展示错误提示。
- 无效赋值:最后一行
house = alert(...)毫无意义,alert函数没有返回值,不需要赋值给变量。
满足需求的修正代码
方案一(用while循环,逻辑更直观):
var house; // 第一次显示初始引导提示 house = prompt("With which house will you be placed? Please enter Gryffindor, Ravenclaw, Hufflepuff, or Slytherine!"); // 输入非Gryffindor时,持续显示错误提示 while (house !== 'Gryffindor') { house = prompt('That is not the house for you, try again!'); } // 输入正确后提示成功 alert("Yes that is the house for you!");
方案二(用do-while循环,贴合任务要求):
var house; do { // 首次循环显示初始提示,后续循环显示错误提示 house = house ? prompt('That is not the house for you, try again!') : prompt("With which house will you be placed? Please enter Gryffindor, Ravenclaw, Hufflepuff, or Slytherine!"); } while (house !== 'Gryffindor'); alert("Yes that is the house for you!");
代码说明
- 首次输入时显示初始引导提示,之后只要输入不是
Gryffindor,就重复显示错误提示。 - 循环终止条件明确:当输入严格等于
Gryffindor时退出循环,执行成功提示。 - 去掉了无效的赋值操作,逻辑流程清晰符合需求。
内容的提问来源于stack exchange,提问作者Emma Anwar
相关产品推荐
相关产品推荐

