【发布时间】:2019-03-11 23:26:40
【问题描述】:
我一直在尝试创建一个简单的 while 循环来将数字转换为向量,并进行一些基本的输入验证。但是,我发现我的代码发生了一些奇怪的事情。我试图让用户可以输入数字,直到他们输入“0”,这将结束循环。这工作正常。
但是,我也在尝试这样做,以便如果他们输入非整数(即 3.4,a),或者如果他们输入负数,它会输出“BAD INPUT”然后退出程序。当我输入负数时,它工作正常。但是当我输入一个非整数时,它什么也没有,但仍然退出程序......
同样,我也想这样做,如果他们先输入“0”,而没有事先输入任何数字,它会输出“NO NUMBERS”并退出程序。这个也退出了程序,但同样,没有任何东西。
我的代码如下:
#include <iostream>
#include <vector>
//I know it is considered bad practice for the below part.
using namespace std;
int main()
{
vector<int> numberStorage;
while (cin) {
int numInput = 0;
cin >> numInput;
if (numInput == 0) break;
if (!cin || numInput < 0) {
cout << "BAD INPUT" << '\n';
return false;
}
if (numInput == 0 && numberStorage.size() == 1) {
cout << "NO NUMBERS" << '\n';
return false;
}
numberStorage.push_back(numInput);
}
return 0;
}
谁能帮助我并澄清我的逻辑/代码在这些输入验证中哪里出错了?感谢您的帮助。
【问题讨论】:
-
按原样,您的程序将无法运行,因为它缺少主程序入口点。
标签: c++ validation vector