黑马程序员技术交流社区
标题:
将string类型看做一个char数组,char中逐个元素强制转换的问题
[打印本页]
作者:
郑玉赛
时间:
2012-5-18 09:51
标题:
将string类型看做一个char数组,char中逐个元素强制转换的问题
本帖最后由 郑玉赛 于 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码值再输出了,这是为什么?该怎么样才能解决?
作者:
谢栋文
时间:
2012-5-18 10:23
int j = Convert.ToInt32(s);//尝试强制转换,如果18个元素都成功了就证明输入的全部是数字。
Console.WriteLine(j);
你这里转换不恰当。。。字符都是有ASCII码的,你这里转换就相当于把字符转换成ASCII码,输出当然是ASCII码了
判断字符是不是数字应该用IsDigit(Char)
所以这里应该改成:
Console.WriteLine("请输入18位有效身份证号");
string s = Console.ReadLine();
if (s.Length == 18)//可以把string类型看做一个char数组,这里就判断数组长度是否为18
{
for (int i = 0; i < s.Length; i++)
{
if (Char.IsDigit(s[i]))//判断s中每一个字符是否是数字
{
Console.WriteLine(s[i]);
}
else
{
Console.WriteLine("不是数字,输入非法");
}
}
}
else
{
Console.WriteLine("身份证必须为18位数");
}
Console.ReadKey();
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2