如果userList [i] .CheckUser(用户名,密码)返回false,则它进入else条件,我得到输出“User Does Not Exist!再试一次输入用户名和密码”该行然后陷入无限循环我无法弄清楚为什么,我的意思是程序再次进入do-while循环,所以我不知道循环会如何延续?
int main()
{
LoadUsersFromDatabase();
bool flag;
string username;
int password;
do{
cout << "Enter username and password: ";
cin >> username >> password;
for (int i = 0; i < numOfUsers; i++)
if (userList[i].CheckUser(username, password) == true)
{
if (userList[i].GetUserType() == 'A')
{
ProcessAssistantMenu();
}
else if (userList[i].GetUserType() == 'M')
{
ProcessManagerMenu();
}
}
else
cout << "\rUser Does Not Exist! Try Again! ";
flag = false;
} while(flag == false);
return 0;
}
答案 0 :(得分:4)
您始终设置flag = false
。
我猜你想要这样做:
else{
cout << "\rUser Does Not Exist! Try Again! ";
flag = false;
}
正如亚历克斯指出的那样,你首先没有设置true
。
答案 1 :(得分:2)
循环中永远不会设置标记true
。