关于有效性检验的问题
大家看看这段代码
for(i=0;i<ND-1;i++)
{
for(j=i+1;j<ND;j++)
{
Here:cout<<"请输入"<<letter[i]<<"到"<<letter[j]<<"的距离(不能到达则用-1表示):"<<endl;;
cin>>distance[i][j];
if(distance[i][j]>=-1&&distance[i][j]!=0)
distance[j][i]=distance[i][j];
else
{
cout<<"Input error!";
getchar();
goto Here;
}
}
}
我现在要求输入的只能是大于等于-1的数字,当输入其他的字符时出错,我的判断方法如上,但是总有错,总觉得是缓冲区什么之类的,该怎么弄?????????
[解决办法]
for(i=0;i<ND-1;i++)
{
for(j=i+1;j<ND;j++)
{
Here:cout<<"请输入"<<letter[i]<<"到"<<letter[j]<<"的距离(不能到达则用-1表示):"<<endl;;
cin>>distance[i][j];
if(distance[i][j] < -1
[解决办法]
distance[i][j] == 0)
//distance[j][i]=distance[i][j];
// else
{
cout<<"Input error!";
getchar();
goto Here;
}
}
}
[解决办法]
楼上对的
对非数值再加个if
[解决办法]
可能是你输入其他字符的时候也会进入到if条件里面吧,因为输入的字符被一个整型变量接受的话会转换成其ASCII的,而ASCII都是正的。你可以单独做一个函数来检测键盘上的输入,并控制职能从0~9这十个数字键上输入,否则不通过。至于具体实现,我也没做过大致思路
bool GetValue(int &val)
{
char chs[10];
int num = 0;
char ch;
for(; ;)
{
cim>>ch;
if('0' <= ch && ch <= '9')
{chs[num++] = ch;
}
else
{
//根据你的情况自己加
}
}
}
[解决办法]