2017-11-16 21 views
-1
int departmentNo; 
bool depNumIncorrect = false; 
do 
{ 
    depNumIncorrect = false; 
    cout << "Please enter your department number... (1/2/3)" << endl; 
    cin >> departmentNo; 
    if (departmentNo < 1 || departmentNo > 3) 
    { 
     cout << "Invalid Entry." << endl; 
     depNumIncorrect = true; 
    } 
} while (depNumIncorrect == true); 

正しい入力(1/2/3)を入力するたびに、コードは正常に動作し、ループなしで処理を続けます。間違った整数を入力すると、コードは想定通りにループします。しかし、文字や文字列を入力すると、コードが無限ループに入ります。 「部門番号を入力してください...(1/2/3)」が繰り返しコンソールに出力されます。C++無限ループ繰り返し

文字や文字列が入力されたときに無限ループを開始するのではなく、ループして再び入力できるようにするにはどうすればよいですか?

+0

'std :: cin'のエラーフラグをクリアする必要があります。 – Jarod42

+0

申し訳ありませんが、私はC++の新機能です。どうすればいいですか? – user216803

+1

'departmentNo'が' int'の並べ替えだとすることはできますか? A [mcve]( 'main()'を含む)とあなたのコードを無限ループに入れる具体的な入力例であり、より正確なタイトルはこれを良い質問にするでしょう – Tas

答えて

0

deparmentNoはIntであり、変換の問題があります。他の人が触れたように、std :: cinのエラーフラグをクリアしてください。さらに、おそらくintに変換するのではなく、文字列に変換し、intに変換しようとするべきです。変換の試み(成功したかどうか)は、有効なエントリを確認する追加の基準になります

関連する問題