該程序在指定範圍內打印指定數量的數字。但是,當我輸入一個字符時,它會無限循環地循環執行,例如:如果我在「輸入最大數字」cin中輸入一個字符,它只是無休止地掃描「輸入最大數字」,它只是跳過在CIN和循環的COUT(同樣適用於其他2 DO-田地。任何人都知道爲什麼嗎?不停地循環cout,忽略cin
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
int roll(int mini, int maxi)
{
int v = maxi - mini;
int x = mini + (rand() % (v+1));
return x;
}
void caller()
{
int a;
int b;
int c;
do {
cout << "Enter minimum number" << endl;
cin.clear();
cin >> a;
} while (cin.fail());
do {
cout << "Enter maximum number" << endl;
cin.clear();
cin >> b;
} while (cin.fail() || a > b);
do {
cout << "How many rolls?" << endl;
cin.clear();
cin >> c;
} while (cin.fail());
for (int i = 0; i < c; i++)
cout << roll(a, b) << endl;
}
int main()
{
srand (time(NULL));
caller();
return 0;
}
你從來沒有真正提取過的字符。它只是在下次嘗試閱讀時坐在那裏。 – chris 2013-02-16 07:21:16
我還是個初學者,你的意思是什麼?我該如何解決這個問題? – Foxic 2013-02-16 07:23:31
既然您沒有真正讀過它,它仍然在流中,所以下次嘗試讀取任何內容時,它將首先讀取,這會再次導致問題。使用'ignore'或其他東西來放棄不可讀的(至少對於'int')字符。 – chris 2013-02-16 07:28:59