在我选择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语句。