我正在尝试使用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') );
有什么想法吗?
答案 0 :(得分:2)
重复循环的条件是任何:
accountNum <= 9999
accountNum >= 100000 && accountType != 'r'
accountType != 'R'
accountType != 'b'
accountType != 'B'
但对于每个字符,(3),(4)和(5)中至少有两个是真的,所以你总是会重复。
当accountType
检查的全部失败或任何accountNum
检查失败时,您需要循环。也就是说,任何一个:
accountNum <= 9999
accountNum >= 100000
accountType != 'r' && accountType != 'R' && accountType != 'b' && accountType != 'B'