开关内的外壳不停地循环,即使我已经中断

Case inside switch looping non-stop, even though i had break

我刚开始学习 C++,我正在使用 switch case 制作这个菜单驱动程序。 问题是,当我输入其中一个选项时,它会无限循环,尽管我已经使用了 break。

    while (choice != 3)
    {
            switch(choice)
            {
                case 1:
                {
                    int TIME;
                    cout << "Input time: " << endl;
                    cin >> TIME;

                    string ACTIVITY;
                    cout << "Input activity: " << endl;
                    cin >> ACTIVITY;

                    todo.addNode(TIME, ACTIVITY);
                    break;
                }

                case 2:
                {
                    int DELETE;
                    cout << "Which activity that you want to delete: " << endl;
                    cin >> DELETE;

                    todo.removeIndex(DELETE);
                    break;
                }

                default:
                {
                    cout << "Invalid input";
                    break;
                }
            }
}

例如,如果我按 1,程序会不断询问时间和 activity,不会中断。当我按下 1,2 或 3 以外的任何数字时,它会不断打印无效输入。

我是不是漏掉了什么?

目前您的代码跳出 switch 语句,但无法跳出 while 循环,因为条件未作为其中的输入。

要跳出 while 循环,您需要一个标志来中断外部 while 循环:

int flag=0;
while (choice != 3)
{
    switch(choice)
    {
        case 1:
        {
            int TIME;
            cout << "Input time: " << endl;
            cin >> TIME;

            string ACTIVITY;
            cout << "Input activity: " << endl;
            cin >> ACTIVITY;

            todo.addNode(TIME, ACTIVITY);
            break;
        }

        case 2:
        {
            int DELETE;
            cout << "Which activity that you want to delete: " << endl;
            cin >> DELETE;

            todo.removeIndex(DELETE);
            break;
        }

        default:
        {
            cout << "Invalid input";
            flag=1;
            break;
        }
    }
    if(flag == 1)
    {
        break;
    }
}

这是一种实现方式。您的 flag=1; 声明可能在其他地方。

注意1:不要用return代替break,如果在这个[=14=之后的函数中还有其他需要处理的地方] 环形。否则,您可以从 if(flag == 1) 条件 return。

注2:另一种选择是在默认情况下从用户那里获得选择输入。像这样 cin >> choice; 问题是你的 while 循环在进入循环后没有选择,因为这个选择不会改变,因此无限循环。