我想验证用户输入是否为浮点数,程序检查输入是否为浮点数并打印“数字很好”,否则打印“数字不好”并继续循环而不考虑失败的尝试循环,以其他方式让他再次尝试输入浮点数。
问题是一旦用户输入“字符”,程序就会进入无限循环。我真正想要它做的只是打印“数字不好”然后继续。
谁能告诉我为什么会发生这种情况,也请考虑不要使用任何其他库。
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int x;
float num;
cout << "Please enter the amount of numbers you wish to enter" << endl;
cin >> x;
cout << "Please enter the numbers" << endl;
for(int i=0; i < x;) {
if(!(cin >> num)) {
cout << "Number isn't fine" << endl;
continue;
}
cout << "Number is fine" << endl;
++i;
}
system("pause");
}
@Steve 您的解决方案同时使用 cin.clear() 和 cin.ignore
@AndyG 感谢您的帮助,但不幸的是,我仅限于最简单的方法。
如果有人想知道它在未来的样子,这里是最终代码。
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int x;
float num;
cout << "Please enter the size of numbers" << endl;
cin >> x;
cout << "Please enter the numbers" << endl;
for(int i=0; i < x;) {
if(!(cin >> num)) {
cin.clear();
cin.ignore();
cout << "not a float number" << endl;
continue;
}
cout << "Number is fine" << endl;
++i;
}
system("pause");
}