A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qly2046 中级黑马   /  2013-12-16 19:54  /  1292 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 qly2046 于 2013-12-20 15:29 编辑

//判断一个字符串是不是身份证号码,即是否是1518位数字
Console.WriteLine("请输入身份证号码?");
            doubleID =Convert.ToInt32(Console.ReadLine());
            if((ID == 1.0 * 1015) || (ID == 1.0 * 1018))  
            Console.WriteLine("号码正确!");
            Console.WriteLine("程序结束!");
            Console.ReadKey();

我这样写有哪里不对呢?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

9 个回复

倒序浏览
转换成int32,超出范围了。。而且你前面定义的是double类型,这会有一次隐式类型转换。。
回复 使用道具 举报
黄晓波 发表于 2013-12-16 20:06
转换成int32,超出范围了。。而且你前面定义的是double类型,这会有一次隐式类型转换。。 ...

如果不用convert.ToInt32,那么应该用什么类型的呢?
回复 使用道具 举报
哥们,我还是不太明白,请详细说明?谢谢了
回复 使用道具 举报
本帖最后由 如远行客 于 2013-12-19 11:59 编辑

身份证号不应该用double或者int32类型,应该使用字符串类型,就像电话号码一样,用数字表示有什么意义呢??
用string类型,然后逐个字符检查,只要有一个字符不是数字就判断不是身份证号码

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
身份证号码电话号码神马的统统的字符串。。。。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
qly2046 中级黑马 2013-12-19 14:07:22
7#
要是这样说的话,我就明白了,我用的是double类型,所以会出错!
回复 使用道具 举报
验证的请用正则
  1. string str = Console.ReadLine();
  2.             string patten = @"^(\d{15}|\d{18})$";
  3.             Console.WriteLine(Regex.IsMatch(str,patten)?"输入正确":"输入不正确");
复制代码

回复 使用道具 举报
我是初学都,一起学习
我没看明白你写的什么,但一眼看下去你的代码就写的不规范
1、定义变量要小写,你写的大写
2,if语句要跟一对大括号吧
3.  要加eles吧

就算你代码写对了也要按下面的写
Console.WriteLine("请输入身份证号码?");
            int id =Convert.ToInt32(Console.ReadLine());   
            如果转double
           int double=Convert.ToDouble(Console.ReadLine());
            if((ID == 1.0 * 1015) || (ID == 1.0 * 1018))  
              {
            Console.WriteLine("号码正确!");
              }
             eles
             {
            Console.WriteLine("程序结束!");
             }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
V_John 中级黑马 2013-12-19 17:52:50
10#
如果问题得到解决,请修改为已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马