首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于有效性检验的有关问题

2013-01-23 
关于有效性检验的问题大家看看这段代码for(i0iND-1i++){for(ji+1jNDj++){Here:cout请输入le

关于有效性检验的问题
大家看看这段代码
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
{
//根据你的情况自己加
}
}
}
[解决办法]

引用:
引用:可能是你输入其他字符的时候也会进入到if条件里面吧,因为输入的字符被一个整型变量接受的话会转换成其ASCII的,而ASCII都是正的。你可以单独做一个函数来检测键盘上的输入,并控制职能从0~9这十个数字键上输入,否则不通过。至于具体实现,我也没做过大致思路


bool GetValue(int &amp;amp;val)
{
char……


不管你输入什么,接受设备获取的都是字符,只不过是根据你的接受空间类型不同可能是int float等而把这些输入转换成了相应的变量了。

热点排行