使用While或Do While Loop实现重复数字输入的问题求助
问题解答
1. 无限循环的原因
你遇到无限循环,大概率是因为循环体内没有更新用于判断的变量值。比如你可能写出了这样的错误代码:
let question = Number(prompt("Please pick a number")); while (question < 10) { console.log(question); // 这里没有重新调用prompt获取新输入,question的值永远是最初那个小于10的数 }
只要初始输入的数字小于10,判断条件question < 10就永远为真,循环会一直执行下去,形成无限循环。另外如果用户输入非数字内容,Number()会返回NaN,NaN < 10的结果是false,这种情况不会触发循环,但有效数字未更新变量的场景,必然会导致无限循环。
2. 实现prompt重复弹出的正确方式
用do-while循环最适配这个需求,因为它会先执行一次循环体(弹出prompt),再判断条件是否需要继续循环。同时要在循环体内更新变量,还可以处理非数字输入的情况:
基础版(仅限制数字≥10)
let question; do { // 每次循环都重新获取用户输入并转为数字 question = Number(prompt("Please pick a number (must be ≥ 10)")); // 输入小于10的有效数字时给出提示 if (question < 10 && !isNaN(question)) { alert("This number is too small. Please enter a number ≥ 10."); } // 循环条件:数字小于10,且输入的是有效数字(排除NaN) } while (question < 10 && !isNaN(question)); console.log("You selected a valid number:", question);
进阶版(强制输入有效数字)
如果需要禁止用户输入非数字内容,可调整循环条件:
let question; do { question = Number(prompt("Please pick a number (must be ≥ 10)")); if (isNaN(question)) { alert("Please enter a valid number."); } else if (question < 10) { alert("Number is too small. Please try again."); } // 只要输入是非数字或小于10,就重复弹出prompt } while (isNaN(question) || question < 10); console.log("Valid number selected:", question);
内容的提问来源于stack exchange,提问作者David Perlow
相关产品推荐
相关产品推荐

