If userList[i].用户查核(用户名,密码(返回false,然后它输入else条件,我得到输出"用户不存在!再试一次输入用户名和密码"那行然后卡在一个无限循环中,我不知道为什么,我的意思是程序再次重新进入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;
}
你总是在设置你的flag = false
。
我猜你想这样做:
else{
cout << "rUser Does Not Exist! Try Again! ";
flag = false;
}
正如亚历克斯指出的那样,你一开始就没有把它设置true
。
该标志永远不会在循环中true
设置。