首页 > 解决方案 > 在 do-while 循环中无法逃脱无限循环

问题描述

void menu_prompt(vector<int> list){
char user_input{};
do {
    cout << "P - Print numbers" << endl;
    cout << "A - Add a number" << endl;
    cout << "M - Display mean of the numbers" << endl;
    cout << "S - Display the smallest number" << endl;
    cout << "L - Display the largest number" << endl;
    cout << "Q - Quit" << endl << endl;
    cout << "Enter your choice: " << endl;

    cin >> user_input;
} while(user_input != 'P' || 'A' || 'M' || 'S' || 'L' || 'Q' || 'p' || 'a' || 'm' || 's' || 'l' || 'q');
if(user_input == 'P' || 'p'){
    user_choice_print_numbers(list);
}
else if(user_input == 'A' || 'a'){
    user_choice_add_numbers(list);
}
else if(user_input == 'M' || 'm'){
    user_choice_mean_numbers(list);
}
else if(user_input == 'S' || 's'){
    user_choice_smallest_numbers(list);
}
else if(user_input == 'L' || 'l'){
    user_choice_largest_number(list);
}
else if(user_input == 'Q' || 'q'){
    user_choice_quit();
}

}

我有一个菜单功能,我选择执行一个 do-while 循环,以便至少提示一次菜单。每当我输入以下字符时,都会再次提示菜单。我有一种直觉,这个问题要么与范围界定有关,要么与变量 user_input 的正确操作有关,因为 do-while 循环的转义是基于 user_input。

我的逻辑是“do”部分执行打印语句,并提示用户更改 user_input。如果没有输入转义语句中显示的字符,将再次提示菜单。

我没有发布整个程序,因为它有点冗长,而且我认为其他部分不会影响这个问题。但要点是某些输入将调用之前已经创建的某些函数。

标签: c++infinite-loopdo-whilecontrol-flowscoping

解决方案


推荐阅读