我正在嘗試編寫代碼,它具有較低的限制和較高的限制(以攝氏度爲單位)和增量,並且吐出顯示轉換爲華氏度的表格。反正我遇到問題的是輸入的防彈。Temp轉換輸入防彈?
這裏是我的代碼
int main() {
double lowerLimit=0;
double higherLimit=0;
double step=0;
cout<<"Please give in a lower limit, limit >= 0: 10\n\n";
cin>>lowerLimit;
while(!(cin >> lowerLimit) || lowerLimit < 0 || lowerLimit > 500)
{
cout << "invalid input!\n";
cin.clear();
cin.ignore(numeric_limits<int>::max(), '\n');
}
cout<<"Please give in a higher limit, 10 > limit <= 500: 20 \n\n";
cin>>higherLimit;
while(!(cin >> higherLimit) || higherLimit <= 10 || higherLimit > 500)
{
cout << "invalid input!\n";
cin.clear();
cin.ignore(numeric_limits<int>::max(), '\n');
}
cout<<"Please give in a step. 0 < step <= 10: 4\n\n";
cin>>step;
while(!(cin >> step) || step <= 0 || step >10)
{
cout << "invalid input!\n";
cin.clear();
cin.ignore(numeric_limits<int>::max(), '\n');
}
cout<<lowerLimit<<higherLimit<<step<<"\n\n";
cout<<"Thanks!";
return 1;
}
輸出類似於
什麼情況是,它要求我爲LOWERLIMIT,當我鍵入的東西它沒有做任何事情,它只是停留只有當我再次寫入它繼續。 因此,當我把8它沒有做什麼,然後我把它繼續。與higherLimit相同,我輸入10沒有任何反應,然後我輸入100並繼續。
Coudnt弄清楚該怎麼做。我嘗試了不同的循環,如果語句不起作用。
最後一點。不,這不是HW。
我不需要你告訴我,我不應該這樣寫,我只需要明白髮生了什麼問題。
如果有什麼你認爲我應該告訴你們請評論它,我會編輯請不要只是給-1和離開。
在while循環之前總是有一個cin操作,因此它第一次「什麼都不做」。它在變量中讀取它,然後在while條件內點擊第二個'cin >> var'語句。刪除循環條件以外的。 – Borgleader 2014-10-08 15:08:22