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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郑玉赛 于 2012-5-18 23:53 编辑

Console.WriteLine("请输入18位有效身份证号");
            string s = Console.ReadLine();
            if (s.Length == 18)//可以把string类型看做一个char数组,这里就判断数组长度是否为18
            {
                for (int i = 0; i < 18; i++)
                {
                    try
                    {
                        int j = Convert.ToInt32(s);//尝试强制转换,如果18个元素都成功了就证明输入的全部是数字。
                        Console.WriteLine(j);
                    }
                    catch
                    {
                        Console.WriteLine("输入非法");
                    }
                }
            }
            else
            {
                Console.WriteLine("身份证必须为18位数");
            }
            Console.ReadKey();
运行的时候,发现程序把每个元素都转换成元素的ASCII码值再输出了,这是为什么?该怎么样才能解决?

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

1 个回复

正序浏览
int j = Convert.ToInt32(s);//尝试强制转换,如果18个元素都成功了就证明输入的全部是数字。
                        Console.WriteLine(j);
你这里转换不恰当。。。字符都是有ASCII码的,你这里转换就相当于把字符转换成ASCII码,输出当然是ASCII码了
判断字符是不是数字应该用IsDigit(Char)
所以这里应该改成:
  1. Console.WriteLine("请输入18位有效身份证号");
  2.             string s = Console.ReadLine();
  3.             if (s.Length == 18)//可以把string类型看做一个char数组,这里就判断数组长度是否为18
  4.             {
  5.                 for (int i = 0; i < s.Length; i++)
  6.                 {
  7.                     if (Char.IsDigit(s[i]))//判断s中每一个字符是否是数字
  8.                     {
  9.                         Console.WriteLine(s[i]);
  10.                     }
  11.                     else
  12.                     {
  13.                         Console.WriteLine("不是数字,输入非法");
  14.                     }
  15.                     
  16.                 }
  17.             }
  18.             else
  19.             {
  20.                 Console.WriteLine("身份证必须为18位数");
  21.             }
  22.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马