构造do while循环来处理不能正常工作的C ++帐号

时间:2016-02-29 03:32:16

标签: 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 个答案:

答案 0 :(得分:2)

重复循环的条件是任何

  1. accountNum <= 9999
  2. accountNum >= 100000 && accountType != 'r'
  3. accountType != 'R'
  4. accountType != 'b'
  5. accountType != 'B'
  6. 但对于每个字符,(3),(4)和(5)中至少有两个是真的,所以你总是会重复。

    accountType检查的全部失败或任何accountNum检查失败时,您需要循环。也就是说,任何一个:

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