2011-10-09 7 views
0

whileループがあります。数字の1から5までヒットするとエスケープしたいです。whileループエスケープ範囲

これにはどのようなステートメントが最適でしょうか?

私は現在これを持っています。 oneChoiceを仮定

while ( oneChoice!= 1 || oneChoice!= 2 || oneChoice!= 3 || oneChoice!= 4 || oneChoice!= 5 ) 
{ 
cout << "Please make a selection" << endl; 
cout << "Choose once more: "; 
cin >> oneChoice; 
break; 
} 
+1

なぜそこに「休憩」がありますか? – Griwes

+0

'break 'だけを取り除く –

+0

switch文内の別のwhileループ内で使用されています – mystycs

答えて

2

intである(したがって、例えば、1と2の間の値を持つことができない)だけに条件を変更:

while (!(1 <= oneChoice && oneChoice <= 5)) 

または、等価的に:

while (oneChoice < 1 || oneChoice > 5) 

さらに、oneChoiceには本当の意味や重要性beforを持っていない場合ループに入ると、do { ... } while (oneChoice < 1 || oneChoice > 5);ループを代わりに使用する方が良いでしょう。

2
while (oneChoice < 1 or oneChoice > 5) 
{ 
    // 
} 
+0

これは、その範囲内にないものがあれば間違っているということですか?範囲内の何かが意味するものは、それが残すという意味ですか? – mystycs

+0

はい。そして、ループ内でその 'break 'を使用しないでください。 – Griwes

+0

私は何かのために休憩を使わなければなりませんでした。 – mystycs

3

私はこのようにそれを行うだろう:エラーメッセージは、ユーザーが許容範囲外の値を入力した場合にのみ印刷されるように

int n; 
for (;;) 
{ 
    cout << "Please make a selection (1-5): " 
    cin >> n; 
    if (n >= 1 && n <= 5) break; 
    cout << "You must choose a number from 1 through 5.\n"; 
} 

ブレークは真ん中に行きます。 for (;;)は、上部または下部で終了条件をテストしたくないループの適切なCファミリのイディオムです。