问:我对这项工作有根本的误解。为什么我在下面编写的代码不起作用?我已经给计算机做了一些事情,而guess和randomNumber不匹配。
var randomNumber = getRandomNumber (10 );
可变 猜测;
函数getRandomNumber (上层){ var num = Math 。地板(数学。随机()*上)+ 1 ; 返回num ; }做{猜=提示('猜一个1到10之间的数字' ); }的同时(猜测!==
randomNumber )
文档。写(“您猜对了” )
在练习中,将在循环内评估条件,然后将其分配给变量,然后在(while)中对变量进行测试。当那是(while)的工作时,为什么还要评估do循环内的条件?我非常感谢您提供的任何见解,在这一点上我已经完全迷失了……
以下是练习建议的代码...
var randomNumber = getRandomNumber (10 );
可变 猜测;
VAR correctGuess = 假;
函数getRandomNumber (上层){ var num = Math 。地板(数学。随机()*上)+ 1 ; 返回num ; }做{猜测=提示(“我想到了一些1到10这是什么之间?
);
如果(parseInt函数(猜测)=== randomNumber ){ correctGuess =真} }而(!correctGuess )文件。写('<h1>您猜对了数字!</ h1>' )
答:作为序言,虽然MDN需要花一分钟的时间来处理,但它对do-while循环的解释确实不错。
简而言之,它是这样说的:
do将至少运行一次,然后继续运行,只要while块中所述的条件求值为TRUE。一旦此条件的值为FALSE,则代码将在do-while循环之后传递至下一条语句。
让我们看看上面提供的首选代码:
var randomNumber = getRandomNumber(10);
vargues;
var correctGuess = false;
函数getRandomNumber(upper){
var num = Math.floor(Math.random()* upper)+ 1;
返回num;
}
做{
猜测=提示(“我在想1到10之间的数字。这是什么?”);
if(parseInt(guess)=== randomNumber){CorrectGuess
= true}
} while(!correctGuess)
document.write('您猜到了数字!')
做一次,打印提示。然后,它接受“猜测”(通过parseInt方法传递它以确保它是一个数字,而不是字符串)。然后它问:“猜测”与“ randomNumber”是相同的数字吗?如果是这样,请将'correctGuess'更改为true。检查while条件。在正确猜测的情况下,(!correctGuess)评估为FALSE。为什么?因为此时的correctGuess为TRUE,而不是TRUE(!correctGuess)= FALSE。由于while条件现在为false,因此我们退出循环并打印出获胜声明。
当您输入不正确的猜测时,while循环的计算结果为TRUE(因为correctGuess仍为false,并且NOT FALSE = true)。由于只要while循环中的条件为true,do循环将继续运行,因此它将继续打印提示,直到输入正确的猜测为止,然后结束,如第一段所述。