2017-10-11 70 views
-2

我被分配到寫在C++程序取用戶的輸入,執行一些計算,然後向用戶呈現的信息進行計算之後。不需要While循環或功能,用於輸入驗證

該方案的細節,因爲我的問題是在參考輸入驗證特異性。什麼被認爲是更好的實踐/更實際的驗證多個用戶輸入?

  1. 使用在int main()一個while循環捕捉每cin語句後壞輸入

OR

  • 傳遞輸入到函數與1個while循環來驗證輸入,返回輸入。
  • 我一般相當新的編程,並且只用C++工作了幾個星期,我的新手的本能會告訴我在int main()創建一些while循環和收工。有些東西告訴我一個函數會是一個更好的主意,因爲,你知道,面向對象。

    在此先感謝。 - 韋斯

    +1

    可能是相關的:https://stackoverflow.com/questions/2075898/good-input-validation-loop-using-cin-c – aug

    +0

    我的建議是嘗試兩個,然後自己決定。你將獲得更好的經驗,而不依賴於其他人的主觀偏好。話雖如此,你可能會發現如果你必須採取多個嵌套的輸入,並希望能夠從任何這些輸入中退出,該函數更適合嵌套輸入,因爲它避免了嵌套循環中斷的問題。 –

    回答

    0

    你在正確的,你應該把它變成一個功能,封裝是從長遠來看,(即便你在這個節目再次永遠不會看)總是比較容易,並保持良好的做法是非常有用不管項目!

    如果你不打算上做出的輸入的任何變化,它的有效輸入或無效輸入的話,那麼你總是可以返回一個布爾值,所以你可以做這樣的事情

    if(inputValidator() == true) 
    { 
        //perform calculations 
    } 
    else 
    { 
        //Tell the user their input is incorrect and prompt for the input again 
    } 
    
    +0

    我怎樣才能做到這一點,而不需要初始化一個變量來傳遞給'inputValidator()'?例如,我希望用戶輸入一個數字,該數字將存儲在'int a'中,但是在條件中執行邏輯檢查時,如if(inputValidator(a)== true)',編譯器會拋出一個錯誤,說'int a'是未初始化的。我錯過了什麼嗎? –

    +0

    創建變量時,只需將其初始化爲0或您選擇的其他內容即可。它看起來像這樣。 int a = 0; –

    0

    製作函數來驗證輸入是解決問題的有趣方法。但是我懷疑在你編碼的層次上它不是必須的 - 因爲你說你是初學者程序員。如果只檢查一次一個輸入去將是最好的方式只是一個簡單的while如果要檢查多個看起來你可以使用類似的東西來while但使用for循環要經過所有條目。 祝你好運!

    0

    在你描述的範圍,它通常是沒有必要創建一個功能,你可以聚集一切轉換成int主,沒有太多的問題。

    但是,如果你的列表是可變大小,你可以使用一個基於你收到輸入數量環,併爲他們創造一個例外檢查。如:

    string myOutput; 
    for (int i = 0; i < totalInputs; i++) { 
        cin << myInput; 
        myOutput = exeptionHandle(myInput); 
        cout << myOutput; 
    }