| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1554 人关注过本帖
标题:关于C++中检查输入是否为数字的问题
只看楼主 加入收藏
killcode
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-20
收藏
 问题点数:0 回复次数:7 
关于C++中检查输入是否为数字的问题

我写了一段代码如下:

int number;
do{
cout<<"Please input Number:"<<flush;
cin>>number;
}while(number<=0);

当我输入的是一个字符时它就陷入了无限循环当中,这是为什么呀?我该怎么改这段代码呢?谢谢

搜索更多相关主题的帖子: 数字 检查 输入 
2006-03-20 01:23
西部天狼
Rank: 1
等 级:新手上路
帖 子:95
专家分:0
注 册:2006-2-23
收藏
得分:0 
数据类型不匹配,number是int型的,而输入的是字符型的。并没有为number符值,因些number的值为0。
你这样试一下就知道了:


[CODE]

do
{
cout<<"please input a number:"<<endl;
cin>>number;
cout<<number<<endl;
}while(number<0);

[/CODE]

按你的意思,这样写行不行
char num_c;
cout<<"please input a number"<<endl;
cin>>num_c;
if (num_c<=57 && num_c>=48)
cout<<"you have input a number:"<<num_c<<endl;
else
cout<<"it is not a numbber"<<endl;

[此贴子已经被作者于2006-3-20 7:54:25编辑过]


学习-->编程-->交流-->再学习-->再编程-->再交流
2006-03-20 07:41
killcode
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-20
收藏
得分:0 
可是我不明白,为什么我这样写会造成死循环呀?为什么在do-while里面的cin好像一点都不起作用,它都不让你输,就在不停打印cout里的话
2006-03-20 11:14
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 

同意
西部天狼

第一:你的数据类型不匹配应该定义成这样 char number

第二:你还没有对 number 进行判断
if(number>='0'&&number<='9')


自强不息:)
2006-03-20 12:09
nick
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-3-20
收藏
得分:0 

还是不太明白,C++里不能自动将字符型通过ASCII码转换成数据型进行运行的吗?

2006-03-20 13:57
killcode
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-3-20
收藏
得分:0 

/还有就是我想输入的是一个多位的数字,而不是只从0-9,我还试了几种情况,向我输入"3p"这样的数时,它也当我是数字,这样的情况该怎么办呀?我都快被它弄疯了,呵呵
2006-03-20 14:04
西部天狼
Rank: 1
等 级:新手上路
帖 子:95
专家分:0
注 册:2006-2-23
收藏
得分:0 
以下是引用killcode在2006-3-20 14:04:00的发言:

/还有就是我想输入的是一个多位的数字,而不是只从0-9,我还试了几种情况,向我输入"3p"这样的数时,它也当我是数字,这样的情况该怎么办呀?我都快被它弄疯了,呵呵

#include <iostream>
#include <string>
using namespace std;

bool CheckNumber(string s);

int main()
{
while(1)
{
cout<<"please input a string (press \"q\" to quit)"<<endl;
string in;
cin>>in;
if (in=="q" || in=="Q" ) break;
if (CheckNumber(in)) cout<<"this is a number!"<<endl;
else cout<<"this is not a number !!!"<<endl;
}

return 0;
}

bool CheckNumber(string s)
{
const char *temp = s.c_str();

for(int i=0; i<s.length(); i++)
{
if(temp[i]>=57 || temp[i]<=48) return false;
}

return true;
}

这个可以吧,这是最笨的办法了,但思路比较清楚

学习-->编程-->交流-->再学习-->再编程-->再交流
2006-03-20 23:45
heliujin
Rank: 2
等 级:论坛游民
帖 子:249
专家分:14
注 册:2006-3-14
收藏
得分:0 
楼上的兄弟写的不错
我很欣赏 谢谢你对我们这些菜鸟的帮助
2006-03-26 19:10
快速回复:关于C++中检查输入是否为数字的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013995 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved