なぜ「do while」ループを使用するのでしょうか?[閉まっている]
-
25-09-2019 - |
質問
なぜを使用するのか理解できませんでした 一方を行います ループは必要です。最初に条件が true であるかどうかをチェックせずに、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");
あなたはそれが条件を確認する前に、内のコードブロックを実行していることが正しいですが、それは、内のコードブロックにあなたがそれを持って道を複製する必要はありません。 (すでに述べてきたように)構築物は、コードの一部が1回以上の代わりの0回以上実行されていることを確認する方法ですしながら、(条件付きに依存)/行います。
他のヒント
ご覧のとおり、を繰り返す必要がありました 同じ 2 番目の例の行。保守するときは、これら 2 つの行を同じにしたいと思うでしょうが、 自分自身を繰り返しました.
想像してみてください。 大きなブロック ラインではないので、貴重なビジュアルが不要になるだけでなく、 空間, 、でもそうなります。 維持するのが難しい そして引き寄せる 矛盾.
は、少なくとも実行されない間、 - あなたがさせながら、全て..
で開始するように会った条件を必要とする場合ながら...、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!
//.....
}
そして、あなたはその後の行う-whileループをを使用するように強制されます
の神!! の
の編集を
それとも、手順を使用します..
は違いが最も重要です。 whileループでDOループをシミュレートすることは、常に悪いですかなりのコードの重複をもたらすでしょう。確かに、よりよい解決策は、メソッドにコードと、単にループの前と同じメソッド呼び出しを持っていますが、多くの人々は、これが足制御される」でもそれほど重複を嫌い、とdo
キーワードを使用すると明確に宣言することをリファクタリングすることですループ"。
だから、基本的には、読みやすさと基本的なSEの原則ます。
その良い方法:
int count = ReadDataFromStream();
while(count != 0)
{
count = ReadDataFromStream();
}
はやる-しばらくとして使って書くことができます
int count = 0;
do
{
count = ReadDataFromStream();
} while(count != 0);
やる-ながら、私はこの時点で思い出すことができませんでした。
の優れた例があります何が欠けているのは上記do...while
のご利用は100%の WRONG の!
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;
}
前者は、より分かりやすいます。