javascript - 如何使用 Javascript 中的 if 语句修复我的 while 循环
问题描述
嘿,我正在使用 javascript 开发一个猜谜游戏项目,该项目需要在提示“给我一个 1 到 10 之间的数字”中输入一个数字。说明应包含以下内容:
while the guess is not equal to the target 提示新的猜测 如果猜测小于目标,则打印“太低!” 否则,如果猜测值大于目标,则打印“太高!” 否则打印“你明白了!”
所以我有我的 while 循环和 if 条件语句,但我不知道如何在我的 while 循环中包含我的 if 语句。我的实际结果只是提示我再次猜测,而不会警报太高!或太低!不过,我在猜测正确数字时的 else 语句似乎有效。谢谢你。
let min = 1;
let max = 10;
let target = Math.random() * (max - min + 1);
target = Math.floor(target) + min;
let guess = (0);
guess = prompt("Give me a number between 1 and 10");
console.log("Your guess is" + guess);
while (guess != target) {
prompt("Guess again");
console.log(guess);
}
if (guess < target) {
alert("too low!");
console.log("too low guess", guess);
} else if (guess > target) {
alert("too high!");
console.log("too high guess", guess);
} else {
alert("You got it!");
}
解决方案
您的代码当前正在执行此操作:
- 永远:问“再猜一次”
- 在“永远”结束后(永远不会!)检查
guess
. 此外, 的值guess
与第一次提出的问题相同。
你会想要这个:
- 永远:问“再猜一次”
- “再次猜测”后,检查并存储最后一个答案的存储值。
- 如果答案正确,则停止永远运行的循环。
但同样重要的是:确保prompt
返回一个数字,因为可以在文本提示中输入任何内容。
所以那将是:
// See Note 1.
guess = parseInt(prompt("Give me a number between 1 and 10"), 10);
console.log("Your guess is" + guess);
// 1. Do something forever
while (guess != target){
// 2. store the last answer
guess = parseInt(prompt("Guess again"), 10);
console.log(guess);
// 2b. check the last answer
if (guess < target){
alert("too low!");
console.log("too low guess", guess);
}else if (guess > target){
alert("too high!");
console.log("too high guess", guess);
}
// 3. If the answer is correct, `guess === target` so the loop will end.
}
// See Note 2.
alert("You got it!");
注1:如果玩家输入的东西不能转成整数,parseInt(, 10)
会返回NaN
(不是数字)。你可以测试一下:isNaN(123)
/ isNaN(NaN)
。
注意 2:如果玩家一次正确地得到它,你的应用程序将不会显示消息,因为“你得到它”在循环内。如果第一次答案是正确的,则永远不会进入循环。将消息放在循环之外以解决该问题。
推荐阅读
- python - 理解 Keras 模型中的 Python 变量赋值
- ios - 如何在场景编辑器中使一个节点成为另一个节点的子节点?
- c - asm关键字作为C中的标识符名称?
- excel - 比较两个字符串时类型不匹配
- c# - 使用 AspNet.Security.OpenIdConnect.Server 的基于令牌的安全性在添加身份后停止工作
- javascript - localStorage 供用户和新用户使用(学习目的)
- elasticsearch - 在 ElasticSearch 中搜索多个日期字段
- ruby-on-rails - 连接关系上的 Rails 范围 json 字段
- angular - 单击事件不适用于角度 4 中的选项标签
- android - 当我引用一个没有用“@+id”标记的 id 时,为什么我没有收到错误消息?