开关内的案例不停地循环,即使我坏了
Case inside switch looping non-stop, even though i had break
我刚开始学习 c++,我正在使用开关大小写制作这个菜单驱动的程序。问题是,当我输入其中一个选项时,尽管我已经使用了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 以外的任何数字时,它会无休止地打印无效输入。
我错过了什么吗?
目前您的代码脱离了 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:如果在此while
循环之后函数中有其他内容要处理,请不要使用return
代替break
。否则,您可以从 if(flag == 1) 条件返回。
注意2:另一种选择是在默认情况下从用户那里获取选择输入。 就像这样cin >> choice;
问题是你的 while 循环在进入循环后没有选择,因为这个选择不会改变,因此循环无休止。
相关文章:
- Ardunio UNO解决了多个重叠的定时器循环
- 当我们为(;;) 写作时,它做了什么?for 循环中的双分号有什么作用?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- (C++)虽然循环一次不起作用,但我引入了多个变量
- wxWidgets mac剪贴板在3.1.3上坏了?
- 虽然循环即使应用了错误条件也不会退出
- 计时器坏了或者其他什么的
- 未能优化看似明显的循环不变量(但volatile限定符发挥了神奇的作用)
- boost::p rocess::env 在 ubuntu 19.04 上坏了?
- 课堂上的一行,使整个应用程序坏了. 0xC000005错误
- C是否优化了循环的检查部分
- SFML sf::Text::setFillColor 坏了,还是我做错了什么
- 尝试对字符串数组进行排序,但我似乎陷入了循环
- 为什么我陷入了循环
- 开关内的案例不停地循环,即使我坏了
- 溪水变坏了
- 我最基本的c++程序坏了,我不知道为什么
- dll在多大程度上加快了循环等代码中的计算速度
- 我的电脑怎么坏了?
- 条件评估是否优化?这个代码坏了吗