2014-10-26 80 views
0

當我要求用戶輸入一個值並且該值不允許存在時,我希望程序結束而不是繼續進行。我試圖用休息;但它不適用於if語句。下面是代碼片段:如何防止代碼在顯示錯誤時運行?

int main(){ 
    int flips, guess; 

    cout << "How " << endl; 
    cin >> flips; 

    cout << "Guess " << endl; 
    cin >> guess; 
    if(guess>flips) { 
     cout << "Guess Error" << endl; 
    } 
} 

代碼給出了「猜測錯誤」時輸入無效放置,但其餘代碼也運行。

+0

如果用戶輸入的不是數字的字符串會怎樣?我建議考慮「讀取用戶輸入」的邏輯,然後重新使用「flip」和「guess」。 – 2014-10-26 21:21:12

回答

0

首先,您應該驗證flipsguess的輸入。如果輸入不是整數值,則輸入表達式將返回false。

if(!(cin >> flips)) 
{ 
    cout << "Input must be an integer" << endl; 
    return 1; // return from main with error code 
} 

同樣應該適用於驗證輸入flips。如果猜的次數大於翻轉的數量只是返回...

if (guess > flip) 
{ 
    cout << "Guess Error" << endl; 
    return 2; // return with error code 2 
} 

注意的是,在return語句中使用的誤差值是任意的,並且可以更換,以滿足您的具體要求。

+0

可能會更好地使用'EXIT_FAILURE':http://en.cppreference.com/w/cpp/utility/program/EXIT_status – 2014-10-26 21:24:16