13

do whileループを使用する必要がある理由がわかりません。最初に条件が真かどうかをチェックせずに、while ループに含まれるコードを実行することです。

しかし、以下のコードではありません:

do{
    document.write("ok");
}
while(x == "10");

以下とまったく同じ:

document.write("ok");
while(x == "10"){
    document.write("ok");
}

たぶん、私は非常に愚かで、明らかな何かを見逃していますが、上記の例でdo whileを使用する利点はわかりません。

4

9 に答える 9

19
  • ご覧のとおり、2 番目の例では同じ行を繰り返す必要がありました。あなたが維持するとき、あなたはおそらくこれらの2つの行が同じであることを望みますが、あなたは自分自身を繰り返しました.

  • ここで、それが線ではなく大きなブロックであると想像してください。不必要に貴重な視覚的スペースが必要になるだけでなく、維持して矛盾を引き寄せるのも難しくなります。

于 2010-06-09T06:22:05.730 に答える
15

あなたのコード例は間違っています:

do{
    document.write("ok");
}while(x == "10"){
    document.write("ok");
}

これは実際の形式です。

do {
    document.write("ok");
} while(x == "10");

条件をチェックする前に内部コード ブロックを実行することは正しいですが、内部コード ブロックをそのまま複製する必要はありません。do/while コンストラクトは、(既に述べたように) コードの一部が 0 回以上ではなく 1 回以上 (条件に応じて) 実行されるようにする方法です。

于 2010-06-09T06:20:19.977 に答える
6

どうですか:

do{

   //.....
   // 100000 lines of code!
   //.....

} while(i%10);




もちろん、あなたはそれを書きません:

//.....
// 100000 lines of code!
//.....

while(i%10){

   //.....
   // 100000 lines of code!
   //.....

} 



そして、do-while ループを使用することを余儀なくされます
God Bless it!!

編集:
または、手順を使用します..

于 2010-06-09T07:39:52.927 に答える
5

do while は少なくとも 1 回実行されます - 実行できます。

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
于 2010-06-09T06:16:13.533 に答える
2

それでも

do { 
    s1;
    ...
    sn;
} while (p);

次のように書くことができます

boolean done = false;
while (!done) {
    s1;
    ...
    sn;
    done = !p;
}

前者の方が分かりやすいです。

于 2012-07-24T15:07:17.250 に答える
2

この違いは、少なくとも 1 回実行するコード行が複数ある場合に最も重要になります。do ループを while ループでシミュレートすると、かなりのコード重複が発生し、これは常に悪いことです。確かに、より良い解決策は、そのコードをメソッドにリファクタリングし、単純にループの前後で同じメソッドを呼び出すことですが、多くの人はそのような重複さえ嫌います。doキーワードを使用すると、明確に「これは足で制御されるループです」と宣言されます。 "。

つまり、基本的に、読みやすさと基本的な SE の原則です。

于 2010-06-09T06:20:58.027 に答える
2

コードを書くためのより良い方法:

int count = ReadDataFromStream();
while(count != 0)
{
    count = ReadDataFromStream();
}

do-while を使用して次のように記述できます。

int count = 0;
do
{
    count = ReadDataFromStream();
} while(count != 0);

do-while のより良い例がありますが、現時点では思い出せませんでした。

于 2010-06-09T06:22:38.430 に答える
1

あなたが見逃しているのは、do...while上記の使用が 100%間違っているということです!

たとえば、Javaのdo...whileループは次のようになります。

do {
  //something you want to execute at least once
} while (someBooleanCondition);

そこに2番目のブロックが完全に欠けているのがわかりますか?ステートメントが完全にwhile 終了する様子がわかりますか? つまり、 と の間のペアのコードが{...}実行され、テストされ、それが true の場合、コード ブロックが再度実行されます。そしてまた。そしてまた。false とテストされるまで。dowhile someBooleanConditionsomeBooleanCondition

この時点で、おそらく、両方の形式のループがある理由がわかるでしょう。上記のコードは次のように変換できます。

//something you want to execute at least once
while (someBooleanCondition) {
  //something you want to execute at least once
}

ただし、このコードでは、同じ (潜在的に大きくて複雑な) コードを 2 回入力する必要があるため、さらに多くのエラーが発生する可能性があります。したがって、トップ テスト ループの代わりにボトム テスト ループが必要です。

于 2010-06-09T06:21:32.820 に答える
1

まず、do..while構文が間違っています。次のようになります。

do
{
  document.write("ok");
}while(x=="10");

ループの終了条件を評価せずに、ループの本体を少なくとも 1 回実行する場合に便利です。たとえば、ユーザーに入力を求め、入力に応じてコードを実行するループを書きたいとします。これを少なくとも 1 回実行してから、続行するかどうかをユーザーに尋ねます。このような場合、do..whileループはループに比べてコードが少なくてきれいになりwhileます。

于 2010-06-09T06:21:51.940 に答える