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