黑马程序员技术交流社区

标题: 次方该怎么表达呢?纠结中...? [打印本页]

作者: qly2046    时间: 2013-12-16 19:54
标题: 次方该怎么表达呢?纠结中...?
本帖最后由 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();

我这样写有哪里不对呢?


作者: 黄晓波    时间: 2013-12-16 20:06
转换成int32,超出范围了。。而且你前面定义的是double类型,这会有一次隐式类型转换。。
作者: qly2046    时间: 2013-12-16 20:09
黄晓波 发表于 2013-12-16 20:06
转换成int32,超出范围了。。而且你前面定义的是double类型,这会有一次隐式类型转换。。 ...

如果不用convert.ToInt32,那么应该用什么类型的呢?
作者: qly2046    时间: 2013-12-19 11:06
哥们,我还是不太明白,请详细说明?谢谢了
作者: 如远行客    时间: 2013-12-19 11:57
本帖最后由 如远行客 于 2013-12-19 11:59 编辑

身份证号不应该用double或者int32类型,应该使用字符串类型,就像电话号码一样,用数字表示有什么意义呢??
用string类型,然后逐个字符检查,只要有一个字符不是数字就判断不是身份证号码
作者: 一席倾城    时间: 2013-12-19 12:03
身份证号码电话号码神马的统统的字符串。。。。
作者: qly2046    时间: 2013-12-19 14:07
要是这样说的话,我就明白了,我用的是double类型,所以会出错!
作者: 佘显郡    时间: 2013-12-19 17:14
验证的请用正则
  1. string str = Console.ReadLine();
  2.             string patten = @"^(\d{15}|\d{18})$";
  3.             Console.WriteLine(Regex.IsMatch(str,patten)?"输入正确":"输入不正确");
复制代码


作者: 雨中恋人    时间: 2013-12-19 17:35
我是初学都,一起学习
我没看明白你写的什么,但一眼看下去你的代码就写的不规范
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();
作者: V_John    时间: 2013-12-19 17:52
如果问题得到解决,请修改为已解决




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2