首页 > 解决方案 > 即使添加了中断,程序也不会停止运行

问题描述

在我选择 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;
}

标签: c++

解决方案


switch 语句中的 break 语句只会跳出 switch 语句,不会跳出循环。您必须在循环之外添加一个 break 语句。


推荐阅读