TEL:400-8793-956
当前位置:程序、服务器

为什么需要评估循环的“执行”部分中的条件,这不是“同时”的工作吗?

提问者: 近期获赞: 浏览人数: 发布时间:2021-04-14 09:05:19

 问:我对这项工作有根本的误解。为什么我在下面编写的代码不起作用?我已经给计算机做了一些事情,而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循环将继续运行,因此它将继续打印提示,直到输入正确的猜测为止,然后结束,如第一段所述。
上一篇: 私有字符串未初始化
下一篇: 请帮助我插入这些图像