c++ - 即使添加了中断,程序也不会停止运行
问题描述
在我选择 p 作为类摘要后,我的代码会连续运行。它只是一遍又一遍地无限打印课程摘要。有人可以指出我做错了什么吗?我包含了 break 子句,所以它不应该在打印完成后中断,即使我将它设置为 while 循环?
bool loop = true;
while(loop) {
switch(selection) {
case 'a':
cout << "Please enter student (First Last Grade) info:";
cin >> first_name >> last_name >> grade;
full_name = first_name + " " + last_name;
names.push_back(full_name);
grades.push_back(grade);
cout << "selection:" << endl;
cin >> selection;
break;
case 'r':
cout << "Please enter student (First Last Grade) info:";
cin >> first_name >> last_name >> grade;
full_name = first_name + " " + last_name;
for (j = 0; j < names.size(); ++j) {
if (names.at(j) == full_name) {
names.erase(names.begin()+j);
}
}
for (j = 0; j <= grades.size(); ++j) {
if (grades.at(j) == grade) {
grades.erase(grades.begin()+j);
}
break;
case 'p':
cout << "Class Summary" << endl;
cout << "------------------------" << endl;
cout << "Name" << setw(20) << "Grade" << endl;
cout << "---------" << setw(18) << "--------" << endl;
for (j = 0; j < names.size(); ++j) {
cout << names.at(j) << setw(12) << grades.at(j) << endl;
average += grades.at(j);
}
cout << "Number of Students:" << endl;
cout << "-------------------" << endl;
avgGrade = average/names.size();
cout << "Average Grade:" << endl;
cout << "--------------" << endl;
cout << avgGrade << endl;
break;
}
}
}
return 0;
}
解决方案
switch 语句中的 break 语句只会跳出 switch 语句,不会跳出循环。您必须在循环之外添加一个 break 语句。
推荐阅读
- twitter-bootstrap - Yii2和Dialog报错:“要发布的文件或目录不存在:vendor/bower/bootstrap3-dialog”
- php - 如何用从 $row 获取的数据填充每个输入值?
- vb.net - 在 Vb.net 代码中为 Web 服务方法设置时间
- mysql - 如何在 laravel 关系中使用 join 进行 orderBy
- windows - 当鼠标指向桌面时,所有应用程序的 Windows 消息泵速度都会降低
- reactjs - 使对象在 React 中对整个应用程序全局可用
- python - 如何在 Tensorflow 2.x Keras 自定义层中使用多个输入?
- sass - 如何将一个变量大写并将其保存为 sass/scss 中的新变量?
- javascript - 如何将某些 json 值放入 JS 数组中?
- gnuplot - 使用 gnuplot 时,如何编辑 x 轴上的时间值以从零开始?