为什么要使用“do while”循环?[关闭]
-
25-09-2019 - |
题
我一直不明白为什么使用 做一会儿 循环是必要的。我理解他们的作用,即执行 while 循环包含的代码,而不首先检查条件是否为真。
但下面的代码不就是这样吗:
do{
document.write("ok");
}
while(x == "10");
与以下完全相同:
document.write("ok");
while(x == "10"){
document.write("ok");
}
也许我很愚蠢,错过了一些明显的东西,但我没有看到使用的好处 做一会儿 超过我上面的例子。
解决方案
您示例代码是错误的:
do{
document.write("ok");
}while(x == "10"){
document.write("ok");
}
这将是实际形式:
do {
document.write("ok");
} while(x == "10");
您是正确的,它执行检查条件之前的内部代码块,但它并不需要复制内部代码块你有它的方式。 (根据情况而定)的做/ while结构是(如你已经陈述的)的方式,以确保使该一个片的代码被执行1次或更多次,而不是0次或多次。
其他提示
正如你所看到的,你必须重复 相同的 第二个示例中的行。当你维护时,你很可能希望这两行相同,但你有 重复自己.
现在想象一下这是一个 大块 而不是一条线,不仅会占用不必要的宝贵视觉 空间, ,但也将是 更难维护 并吸引 不一致之处.
不要同时将至少运行一次 - 让你做什么,而...其中,作为同时满足要求所有..
启动条件var i = 6;
do{
alert(i);
}while( i < 5)
// alerts 6, but while criteria isn't met so it stops
var i = 6;
while( i < 5) {
alert(i);
}
// no output - while condition wasn't met
什么:
do{
//.....
// 100000 lines of code!
//.....
} while(i%10);
,点击 点击 点击 当然,你的不会写的是:
//.....
// 100000 lines of code!
//.....
while(i%10){
//.....
// 100000 lines of code!
//.....
}
,点击 结果
和你将被强制使用的 do-while循环 点击 天佑它!!
修改强>结果 或者你会使用程序..
当你必须至少被执行一次的代码多于一个的线所不同的是最重要的。模拟DO循环while循环会导致大量的重复代码,这始终是坏的。当然,更好的解决方案是重构代码到一个方法,然后简单地面前,并在循环中同样的方法调用,但很多人不喜欢,甚至是大量重复,并使用do
关键字毫不含糊地声明:“这是一个脚控环”。
因此,基本上,可读性和基本SE原理。
及其编写代码的一个更好的方法:
int count = ReadDataFromStream();
while(count != 0)
{
count = ReadDataFromStream();
}
可以使用写入DO-而为:
int count = 0;
do
{
count = ReadDataFromStream();
} while(count != 0);
有做,而我却不能在这个时候回忆。
这是更好的例子什么你缺少的是你的do...while
以上的使用是100%的错误!
Java中的do...while
环,例如,看起来像这样:
do {
//something you want to execute at least once
} while (someBooleanCondition);
请参阅即完全缺乏的第二块的存在?如何看while
的结束的声明完全?那么现在情况是,在{...}
和do
之间的while
对的代码得到执行,然后的someBooleanCondition
将得到测试,如果这是真的,代码块将再次得到执行。然后再次。然后再次。直到someBooleanCondition
得到测试假。
在这一点上,也许,你就会明白为什么我们有循环的两种形式。上面的代码可以被翻译为:
//something you want to execute at least once
while (someBooleanCondition) {
//something you want to execute at least once
}
这个代码,但是,需要你两次键入相同的(潜在的大和复杂的)代码,让炉门开着的更多错误。因此,需要一个底测试环路,而不是顶测试环路。
所有do..while
语法首先是错误的。它是这样的:
do
{
document.write("ok");
}while(x=="10");
当要在不评估其teminating条件时执行至少所述循环体一旦它是有用的。例如,假设你想要写一个循环,你是提示用户进行输入,并根据输入执行一些代码。你想这至少执行一次,然后询问用户是否希望继续。在这种情况下,在较小的和更清洁的代码do..while
循环的结果相比while
循环。
虽然
do {
s1;
...
sn;
} while (p);
可以写成
boolean done = false;
while (!done) {
s1;
...
sn;
done = !p;
}
前者是更容易理解。