C++ if else用户验证分支逻辑执行异常问题排查求助
C++用户输入判断逻辑异常问题解答
问题产生原因
你的判断逻辑仅会执行1次:
- 第一次输入非法值进入else分支后,仅重新读取了一次用户输入,没有对新输入的内容做二次判断
- 读取完新输入后程序会直接走到
return 0语句退出,因此不会触发1/2对应的分支逻辑
该问题和你用if-else还是switch无关,属于单次判断逻辑的固有缺陷。
修复方案
将用户输入、合法性判断的逻辑套入循环结构,仅当用户输入合法值(1/2)时才跳出循环,再执行对应分支逻辑。
修正后的代码示例
int main() { int account_or_not; account obj; menu menu_obj; // 循环读取输入直到合法 while (true) { cout << "Do you have an account? 1 for yes or 2 for no " << endl; cin >> account_or_not; if (account_or_not == 1 || account_or_not == 2) { break; } cout << "You entered a value other than 1 or 2 please try again " << endl; } // 此时输入一定合法,执行对应逻辑 if (account_or_not == 1) { menu_obj.user_menu(); } else { obj.create_account(); } return 0; }
内容的提问来源于stack exchange,提问作者Dean
相关产品推荐
相关产品推荐

