2017-07-28 4 views
-3

私は最近、これを多くの人と会って、他の人のスクリプトを読んでいます。簡単な例は以下の通りです: は、スキームは以下の通りです、私たちは入力を必要と言うと、VaRのAとBに保存:なぜwhileループを使用してこのアイデア。それは簡単ですか?

int ok; 
ok = false; 
while(!ok){ 
//ask input for A 
//ask input for B 
ok = true; 
} 

私はそれが何を望んでいるかを理解するが、なぜこのスキームが必要なのか?私は "AとBのための入力を求める"ことができますか?

+1

「ok」を「ブール」にする方が直感的です。 –

+1

おそらく入力を受け入れるときにエラーチェックがあります。ループのボディに 'continue'ステートメントがあるかどうか確認してください。 –

+0

上記のコードは 'do {...} while(false);'と同じですが、if文のような重要なコードを忘れてしまったと思います。 –

答えて

2

なぜこのスキームが必要ですか?

これは必須ではありません。

私は「AとBの入力を求める」ことができますか?

することもできます。

しかし、ユーザーがあなたに有用ではない入力を与えた場合(たとえば、ユーザーの年齢を尋ね、「馬」と入力した場合など)、再度尋ねることができます。入力の再試行を可能にすることは、一般に有用な機能です。プログラムを繰り返すための標準的な制御構造はループです。

しかし、あなたのプログラム例では、無条件にokに設定されているので、実際にはループは使用されません。ループは、入力がOKになる前に渡されなければならない何らかの検証の形式がある場合にのみ意味を持ちます。

+0

ありがとう、これは私が探している答えです。 –

+0

入力のループボディにバリデーションがあります。私はループを使って再試行することはできません。今、このループを維持することがいかに重要であるかを学びました。 –

1

省略したコードにチェックはありませんが、場所全体に同じ構文が表示されている場合は、コピー&のペーストアーティファクトです。

誰かが入力を読み取り、それを検証してから別の場所にコードをコピーし、検証ビットを削除して残りをそのまま残したコードを持っていました。次に、そのコードを貼り付けた&をコピーします。

私の経験では、これは非常に頻繁に起こります。

+0

ナー、私はプログラミングの初心者です、私は私が信じていると私はそれが真剣に取ることはありませんエレガントな傑作だと考えているコードを検討していたこの種の質問.... –

関連する問題