如果输入的性别不是M/m/F/f/X/x,我必须打印错误,但我的if语句总是返回true
cout << "Please enter the candidate's information "
"(enter 'X' to exit).";
cout << endl << "gender: ";
cin.get(gender);
cin.ignore(1000,'\n');
if (gender != 'M' || gender != 'm' || gender != 'F' ||
gender != 'f' || gender != 'X' || gender != 'x')
{
cout << "error";
}
Run Code Online (Sandbox Code Playgroud)
您正在使用错误的布尔运算符.
gender并不是所有人都在同一时间.因此,条件总是会评估为true.你需要使用&&而不是||.
if (gender != 'M' && gender != 'm' && gender != 'F' ||
gender != 'f' && gender != 'X' && gender != 'x')
{
cout << "error";
}
Run Code Online (Sandbox Code Playgroud)
它发现它更易于使用:
// Define a function that encapsulates the logic
bool isValidGender(char gender)
{
return (gender == 'M' || gender == 'm' || gender == 'F' ||
gender == 'f' || gender == 'X' || gender == 'x');
}
Run Code Online (Sandbox Code Playgroud)
使用该功能.
if (!isValidGender(gender))
{
cout << "error";
}
Run Code Online (Sandbox Code Playgroud)
您也可以isValidGender使用switch语句来实现.
bool isValidGender(char gender)
{
switch (gender)
{
case 'M':
case 'm':
case 'F':
case 'f':
case 'X':
case 'x':
true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
您可以先转换gender为小写字母以简化switch语句.
switch (std::tolower(gender))
{
case 'm':
case 'f':
case 'x':
true;
}
Run Code Online (Sandbox Code Playgroud)