2017-06-30 47 views
0

我對C++還很陌生(目前正在學習一門課程),我很接近完成我的最終項目。但是,在我的程序中,這些代碼行和其他代碼會導致我的程序在輸入兩次後才接受輸入。我花了2個小時重新輸入,仍然無濟於事。爲什麼這些代碼行導致我的程序在我輸入了兩次後才接受我的輸入(每次輸入後按Enter鍵)?

cout <<endl<< "Enter balance:"<<endl; 
cin >> balance; 
while(!(cin>>balance)) 
{ 
    cin.clear(); 
    cin.ignore(999,'\n'); 
    cout<<endl<<"Invalid data type! Number expected. Please enter balance again:"<<endl; 
} 
+0

因爲你要求「平衡」兩次?擺脫'cin >>平衡;'不在循環條件。 – NathanOliver

+1

你的意思是從'cin'讀入兩次嗎?第一次進入循環之後,在上面的行中調用stdin的讀取權。 – Peri461

回答

0

擺脫從stdin讀取的雙重電話。

cout << endl << "Enter balance:" << endl; 
//cin >> balance; 
while(!(cin >> balance)) { //This reads in, and continues while read was NOT successful 
    cin.clear(); 
    cin.ignore(999,'\n'); 
    cout << endl << "Invalid data type! Number expected. Please enter balance again:" << endl; 
} 
相關問題