c++ - 构造 do while 循环来处理帐号不工作 C++

标签 c++

我正在尝试使用 do while 循环来评估帐号。有效的帐号必须有 5 位数字,并以字母 R 或 B 开头,不区分大小写。

有效帐号示例: r90000 B10101 R88888 b77777

无效帐号示例: y90000 r888822

这是我创建的循环,我无法弄清楚我的参数有什么问题导致它一遍又一遍地重复,从不排除一个帐号。

char accountType;
int accountNum;

cout << "Please enter your account number." <<endl;
cout << ">> ";
cin >> accountType >> accountNum;
cout <<endl;

do 
{
    cout << "That is not a valid account number. Please enter your account number." <<endl;
    cout << ">> ";
    cin >> accountType >> accountNum;
    cout <<endl;
}while ( (accountNum <= 9999) || (accountNum >= 100000) && (accountType != 'r') || (accountType != 'R') || (accountType != 'b') || (accountType != 'B') );

有什么想法吗?

最佳答案

重复循环的条件是任何:

  1. accountNum <= 9999
  2. accountNum >= 100000 && accountType != 'r'
  3. accountType != 'R'
  4. accountType != 'b'
  5. accountType != 'B'

但是对于每个 字符,(3)、(4) 和(5) 中至少有两个为真,因此您将始终重复。

您需要循环 while 所有 accountType检查失败或任何 accountNum检查失败。也就是说,任何:

  1. accountNum <= 9999
  2. accountNum >= 100000
  3. accountType != 'r' && accountType != 'R' && accountType != 'b' && accountType != 'B'

关于c++ - 构造 do while 循环来处理帐号不工作 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691519/

相关文章:

c++ - 无法将char数组写入Windows注册表项

c++ - 动态转换后未发现不良转换

c++ - 如何在C++中构造静态全局变量

c++ - 如何更新 std::vector<pair<int, int>> 中最近输入的元素?

c++ - 第二次调用 SDL_BlitSurface 时出现段错误

C++ 子类重载乘法运算符隐藏基重载解引用运算符

c++ - 为什么我得到这个输出?

c++ - 何时以及为何在堆 C++ 上声明成员变量

c++ - 使用函数指针类型作为模板参数

c++ - KDevelop 没有看到 C++ 头文件