作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
我有以下代码:
#include <iostream>
#include <limits>
#include <locale>
using namespace std;
int main(int argc, char** argv) {
setlocale(LC_ALL, "English");
int i, vetor[16];
for(i = 0; i < 16; i ++) {
cout << "Input the position: [" << i << "]: ";
cin >> vetor[i];
if(cin.fail()) {
cin.clear();
cin.ignore(numeric_limits < streamsize > ::max(), '\n');
cout << "Please, input only numbers." << endl;
i --;
continue;
}
if(vetor[i] <= 0) {
cout << "Insert a non-zero value." << endl;
i --;
continue;
}
}
cout << vetor[0];
return 0;
}
我只需要接受数字。当我运行它并插入 "1"
(或任何其他数字)时,它会转到以下位置,这是正确的。当我输入 "a"
时,它显示错误并警告我只输入数字,什么也是正确的。如果我输入 "a1"
,同样的事情发生,正确的是什么。但是当我输入 "1a"
时,它向我显示了警告,但是代码继续到下一个位置,并且当它用 cout
命令执行最后一行时return
,它告诉我值是"1"
,不是"1a"
,因为变量的类型是int
我相信。
谁能告诉我为什么会这样?我只需要接受数字,"1a"
不是数字。当我输入 "1a"
时,我该如何过滤它?如果我输入 "a"
时发生同样的事情,我该怎么办?
我使用 DevC++ 5.11。
我是一名优秀的程序员,十分优秀!