如何解决做while循环..现在:无限,目标:不是无限询问直到循环
所以当我输入一个字符或字符串时,它会再次询问这个问题,但会无限……但我希望它每次出错时问一次,如果错了再问一次。得到它... ? :(现在循环是无限的。
#include <iostream>
using namespace std;
int main() {
float money;
do
{
cout << "How much money do you have? " << endl;
cin >> money;
if (money) {
cout << "You have: " << money << "$" << endl;
} else {
cout << "You have to enter numbers,try again." << endl;
}
} while (!money);
return 0;
}
解决方法
您没有验证和清除 cin
流的错误状态。试试这个:
#include <iostream>
#include <limits>
using namespace std;
int main() {
float money;
do
{
cout << "How much money do you have? " << endl;
if (cin >> money) {
// a valid float value was entered
// TODO: validate the value further,if needed...
break;
}
else {
// an invalid float was entered
cout << "You have to enter numbers,try again." << endl;
// clear the error flag and discard the bad input...
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
}
}
while (true);
cout << "You have: " << money << "$" << endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。