为什么循环退出不会?

Why won't while loop exit?

本文关键字:退出 循环 为什么      更新时间:2023-10-16

我正在制作一个程序,将用户的学生姓名和成绩收集到向量中,并使用向量计算平均值。当用户键入"done"时,while 循环应该中断并继续下一段代码。但是,我所做的 while 循环不会中断。有没有更有效的方法可以做到这一点?

我尝试创建一个布尔值,当布尔值为真时会中断,但仍然不起作用。

while (name != "done") {
cout << "Enter name and grade: ";
cin >> name;
if (!(cin >> score)) {
cin.clear;
cin.ignore(256, 'n');
cout << "Re-enter grade: ";
cin >> score;
}
else {
studentName.push_back(name);
studentScore.push_back(score);
}
}

while 循环应该在键入"done"时退出,但它创建一个换行符并且不输出任何内容。

当你键入"done"时,循环的其余部分仍然被执行,因为你只是在开始时检查。因此,它希望您接下来输入分数,然后退出。

一种可能的解决方案是在阅读后立即插入break语句name

if(name == "done") {
break;
}

我认为您可以通过将 while(({} 替换为 do{ }while(( 来轻松解决问题

所以你的代码变成了

do{
cout << "Enter name and grade: ";
cin >> name;
if (!(cin >> score)) {
cin.clear;
cin.ignore(256, 'n');
cout << "Re-enter grade: ";
cin >> score;
}
else {
studentName.push_back(name);
studentScore.push_back(score);
}
}while (name != "done");