c++ - 如何在 C++ 中循环执行再次要求输入的 switch-case 语句?

标签 c++ while-loop switch-statement

首先,我向用户显示一个菜单,他们可以从中做出选择。 一旦他们做出选择,就会执行一些代码,我想再次向他们显示相同的菜单,以便他们可以做出不同的选择。

这是我到目前为止的代码:

//call the menu function and put it in a variable which will be used in the switch case statements
menu_selection = main_menu();

condition_main = true;

while (condition_main) {    
    switch (menu_selection) {
        case 1: display(primes);
                menu_selection = main_menu();

        case 2: display(fibos);
                menu_selection = main_menu();

        case 3: display(primes_and_fibos);
                menu_selection = main_menu();

        case 4: display(primes_not_fibos);
                 menu_selection = main_menu();

        case 5: display(fibos_not_primes);
                 menu_selection = main_menu();

        case 6: search();
                 menu_selection = main_menu();

        case 7: condition_main = false;
                             return 0; //this exits the program
        default: cout << "\nThat is an invalid option. Please try again.\n\n";

    } 
}
然而,当我运行该程序时,似乎发生的情况是,如果我选择选项 1,它将执行代码并再次显示菜单,但如果我再次选择选项 1,它将运行为选项 2 设计的代码.我也尝试过 do while 循环,但根本不使用循环,似乎没有任何效果。感谢任何帮助,谢谢。

最佳答案

我同意,休息时间不见了。您可能需要考虑更像这样的代码结构:(我的格式不太好,因为我想要紧凑)

do {
   menu_selection = main_menu();
   switch (menu_selection) {
   case 1 : display(primes);            break;
   case 2 : display(fibos);             break;
   case 3 : display(primes_and_fibos);  break;
   case 4 : display(primes_not_fibos);  break;
   case 5 : display(fibos_not_primes);  break;
   case 6 : search();                   break;
   case 7 : break;
   default: cout << "\nThat is an invalid option. Please try again.\n\n";
} while (condition_main != 7);
return 0;

(当然,按照您喜欢的方式格式化。)这只需要对菜单功能进行一次调用,使维护更加容易。 return 也在函数的末尾,大多数人都希望在那里找到它。

关于c++ - 如何在 C++ 中循环执行再次要求输入的 switch-case 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15338209/

相关文章:

c++ - 如何使用 UART 板从 DS​​18B20 读取温度

c++ - Halide - while 循环等效

c++ - 带有 QString 类型的 C++ 中的 switch/case 语句

ios - 创建 switch 语句给我错误

c++ - 将C union 转换为C++ union

c++ - C++/Qt项目的跨平台编译

c++ - 链接 INTEL tbb 库时遇到问题

c - 水的状态(温度程序)- C 编程

c - 在 C 程序中嵌套 while 循环时遇到问题

php - 如何在 Mustache 模板中使用 switch case?