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

更新于: 2021年10月7日

728 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告