C++程式定義使用者名稱過短異常並驗證使用者名稱
假設我們有一系列使用者名稱,我們需要根據一些條件檢查使用者名稱是否有效。因此,我們需要定義一個異常,當用戶名的長度小於 5 個字元時丟擲。對於有效的使用者名稱,我們應該返回“Valid”(有效),對於無效的使用者名稱,我們應該返回“Invalid”(無效),對於過短的使用者名稱,我們應該丟擲異常。有效的使用者名稱條件如下:
使用者名稱必須是五個字元長
使用者名稱中不能有兩個連續的 'w'
因此,如果輸入類似於 unames = ["amit", "to", "paul_tim", "greg_harry", "towwer"],則輸出將是 [Too short: 4, Too short: 2, Valid, Valid, Invalid],因為前兩個使用者名稱太短,最後一個使用者名稱有兩個連續的 'w'。其他使用者名稱都是有效的。
為了解決這個問題,我們將遵循以下步驟:
定義一個名為 BadLengthExcaption 的異常
它將返回長度資訊
定義一個名為 validation() 的函式,它將接收 u_name 作為引數
isValid := true
n := u_name 的大小
如果 n < 5,則
丟擲一個 BadLengthException(n)
初始化 i := 0,當 i < n-1 時,更新(i 增加 1),執行以下操作:
如果 u_name[i] 等於 'w' 且 u_name[i + 1] 等於 'w',則
isValid := false
返回 isValid
在主方法中執行以下操作
對於 unames 中的所有使用者名稱 u_name,執行以下操作:
validate(u_name)
如果有效,則列印 VALID
否則,如果無效,則列印 INVALID
否則,如果長度過短,則列印 Too Small
示例
讓我們檢視以下實現,以便更好地理解:
#include <iostream> #include <vector> #include <exception> using namespace std; class BadLengthException{ public: int x; BadLengthException(int n) { x=n; } int what() const throw(){return x;} }; bool validation(string u_name) { bool isValid = true; int n = u_name.length(); if(n < 5) { throw BadLengthException(n); } for(int i = 0; i < n-1; i++) { if(u_name[i] == 'w' && u_name[i+1] == 'w') { isValid = false; } } return isValid; } int main() { vector<string> unames = {"amit", "to", "paul_tim", "greg_harry", "towwer"}; for(int i = 0; i < unames.size(); i++){ string u_name = unames[i]; try { bool isValid = validation(u_name); if(isValid) { cout << "Valid" << '\n'; } else { cout << "Invalid" << '\n'; } } catch (BadLengthException e) { cout << "Too short: " << e.what() << '\n'; } } }
輸入
{"amit", "to", "paul_tim", "greg_harry", "towwer"}
輸出
Too short: 4 Too short: 2 Valid Valid Invalid