身份证号码转换程序
来源:互联网 发布:淘宝实名小号购买 编辑:程序博客网 时间:2024/05/20 23:59
昨天帮同学编了一个小程序,主要是为了完成把身份证号码由15位转换成18位。原来在使用substring函数时总是一带而过,现在遇到麻烦了,归根到底是没仔细看过原文API,现在罗列出来,复习一下!源程序如下:
class IDConvert
{ public static void main(String [] args)
{
String T=""; //18位号码的尾数,由后面计算得出最后取值
long R; //文章最后有全面的说明
String Final_Id_Num;
String Id;
Id = "120103311222265";
long N = 0;
String strTailChars = "10x98765432";
try
{
long IdNum = Long.parseLong(Id);
if (Id.length()!=15)
throw new Exception();
}
catch(IllegalArgumentException e)
{
System.out.println("输入的不是正确参数");
}
catch(Exception e1)
{
System.out.println("输入的号码位数不正确");
}
String Id_6_Upper = Id.substring(0,6); //要在原15位号码中加上“19”,拆成两部分
String Id_9_Lower = Id.substring(6,15);
String Original_New_Id = Id_6_Upper + "19" + Id_9_Lower; //变成17位号码
int v_List[]={2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7}; //计算尾数的一个数组
int i,m,repeat=0;
for(i=0;i<17;i++)
{
m=16-repeat;
//System.out.println(repeat);
N+= Long.parseLong(Original_New_Id.substring(m,m+1))*(long)v_List[repeat]; //见文尾说明
//System.out.println(N);
repeat++;
}
R = N%11; //取模找对应的T值(18位的尾数)
System.out.println(R);
for(m=0;m<11;m++)
{
if(R==m)
T = strTailChars.substring(m,m+1);
}
System.out.println(T);
Final_Id_Num = Original_New_Id +T; //17位的号码+尾数T
System.out.println(Final_Id_Num);
}
}
程序的要求及转换规则如下:
身份证号转换由15位到18位.(输入的参数是命令行参数,输出18位身份证号)
错误处理:
a.用户输入的身份证号必须是15位,如果输入有误要给出提示。
b.如果用户输入了非数字字符,给出提示信息。
提示:当字符串转换成数字的函数发生异常,则说明输入了非数字字符。
计算18为身份证号:
身份号15位到18位转换算法:
1.身份证号转换由15位到18位.(输入的参数是命令行参数)
错误处理:
a.用户输入的身份证号必须是15位,如果输入有误要给出提示。
b.如果用户输入了非数字字符,给出提示信息。
提示:当字符串转换成数字的函数发生异常,则说明输入了非数字字符。
1.在6位行政区后插入2位世纪代码(如19),构成四位出生年份,得到17位号码;
2.把17位号码从高位到低位与下列17个数字分别相乘求和(N):
提示: int v_List[]={2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7};
比如:身份证号为:c1c2c3c4......c16c17
则 N=c17x2+c16x4+......+c1x7;
3.将N除以11取余数R,根据余数计算尾数T:
1)如果R=0,则T=1;如果R=2,则T=X;
2)如果R=3,则T=9;......
提示:String strTailChars="10x98765432";
4.将尾数T添加到17位号码后即得到18位号码。
另substring()的应用如下:
在括号中如果只有一个参数,代表返回值为该字符串对象中与参数对应的位置那个字符至尾字符的字符串。
exp: String aa = ''qwerty'';
aa.substring(2)的返回值为:''erty''
如果有两个参数,可以这样理解:第一个参数为在原字符串中与参数相对应的位置的那个字符,第二个参数就是从原字符串中,由第一个字符算起一共有几个字符,返回值即为两个参数对应字符之间的那段字符串
exp: String aa = ''qwertyuiop''
aa.substring(2,8)的返回值为:''ertyui''
写完这些,连自己都有点晕,希望以后就算能记住了,汗……
class IDConvert
{ public static void main(String [] args)
{
String T=""; //18位号码的尾数,由后面计算得出最后取值
long R; //文章最后有全面的说明
String Final_Id_Num;
String Id;
Id = "120103311222265";
long N = 0;
String strTailChars = "10x98765432";
try
{
long IdNum = Long.parseLong(Id);
if (Id.length()!=15)
throw new Exception();
}
catch(IllegalArgumentException e)
{
System.out.println("输入的不是正确参数");
}
catch(Exception e1)
{
System.out.println("输入的号码位数不正确");
}
String Id_6_Upper = Id.substring(0,6); //要在原15位号码中加上“19”,拆成两部分
String Id_9_Lower = Id.substring(6,15);
String Original_New_Id = Id_6_Upper + "19" + Id_9_Lower; //变成17位号码
int v_List[]={2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7}; //计算尾数的一个数组
int i,m,repeat=0;
for(i=0;i<17;i++)
{
m=16-repeat;
//System.out.println(repeat);
N+= Long.parseLong(Original_New_Id.substring(m,m+1))*(long)v_List[repeat]; //见文尾说明
//System.out.println(N);
repeat++;
}
R = N%11; //取模找对应的T值(18位的尾数)
System.out.println(R);
for(m=0;m<11;m++)
{
if(R==m)
T = strTailChars.substring(m,m+1);
}
System.out.println(T);
Final_Id_Num = Original_New_Id +T; //17位的号码+尾数T
System.out.println(Final_Id_Num);
}
}
程序的要求及转换规则如下:
身份证号转换由15位到18位.(输入的参数是命令行参数,输出18位身份证号)
错误处理:
a.用户输入的身份证号必须是15位,如果输入有误要给出提示。
b.如果用户输入了非数字字符,给出提示信息。
提示:当字符串转换成数字的函数发生异常,则说明输入了非数字字符。
计算18为身份证号:
身份号15位到18位转换算法:
1.身份证号转换由15位到18位.(输入的参数是命令行参数)
错误处理:
a.用户输入的身份证号必须是15位,如果输入有误要给出提示。
b.如果用户输入了非数字字符,给出提示信息。
提示:当字符串转换成数字的函数发生异常,则说明输入了非数字字符。
1.在6位行政区后插入2位世纪代码(如19),构成四位出生年份,得到17位号码;
2.把17位号码从高位到低位与下列17个数字分别相乘求和(N):
提示: int v_List[]={2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7};
比如:身份证号为:c1c2c3c4......c16c17
则 N=c17x2+c16x4+......+c1x7;
3.将N除以11取余数R,根据余数计算尾数T:
1)如果R=0,则T=1;如果R=2,则T=X;
2)如果R=3,则T=9;......
提示:String strTailChars="10x98765432";
4.将尾数T添加到17位号码后即得到18位号码。
另substring()的应用如下:
在括号中如果只有一个参数,代表返回值为该字符串对象中与参数对应的位置那个字符至尾字符的字符串。
exp: String aa = ''qwerty'';
aa.substring(2)的返回值为:''erty''
如果有两个参数,可以这样理解:第一个参数为在原字符串中与参数相对应的位置的那个字符,第二个参数就是从原字符串中,由第一个字符算起一共有几个字符,返回值即为两个参数对应字符之间的那段字符串
exp: String aa = ''qwertyuiop''
aa.substring(2,8)的返回值为:''ertyui''
写完这些,连自己都有点晕,希望以后就算能记住了,汗……
- 身份证号码转换程序
- 一个身份证号码转换程序
- 身份证号码验证程序
- Java 身份证号码验证程序
- 关于身份证号码位数转换计算方式
- 身份证号码抽奖程序源代码[VC++6]
- 身份证号码的结构以及相关程序
- 二代身份证号码算法及C#程序实现
- 【PB】身份证号码校验的完整程序
- 15位身份证号码转换成18位身份证号码(java代码)
- 身份证号码15位到18位的转换
- Java身份证号码验证及将15位转换18位
- DB2中15位与18位身份证号码转换过程
- excel表格中18位身份证号码如何转换成出生日期
- Excel实现身份证号码自动转换为18位的技巧
- 使用C#实现身份证号码15位到18位的转换
- 新旧身份证合法性验证及相互转换算法(三):Java身份证号码验证及将15位转换18位
- 身份证号码验证兼15位转18位程序(javascript版)
- 迷茫啊。已经两天了,什么活都没干
- 关于Access数据库安全
- 编译考试
- Access安全
- asp.net学习资源
- 身份证号码转换程序
- 进退两难——一个项目经理的日记
- JavaScript实现下雪(Snow)效果
- Symbian OS 错误码
- JAVA相关基础知识_mxf
- 微软面试题
- [原创]如何给flash做缩略图
- 整理自天极网的VC数字图像处理编程讲座
- 12月23日电脑被种木马,已清除!