我刚开始学习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,程序会无休止地询问时间和活动而不会中断。当我按下1,2或3以外的任何数字时,它会无限地打印无效输入。
我错过了什么吗?
答案 0 :(得分:1)
目前你的代码突破了switch语句,但是不能从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
代替while
。否则,您可以从if(flag == 1)条件返回。
注2:另一种选择是在默认情况下从用户那里获得选择输入。像cin >> choice;
这样的问题是你的while循环在进入循环后没有选择,因为这个选择没有改变,因此无休止地循环。