欢迎光临散文网 会员登陆 & 注册

Java oop:输入身份证号,将其出生年月提取转换成中文形式(详析哈希值等,有视频版)

2020-02-24 09:11 作者:诗书画唱  | 我要投稿

// 提示用户输入一个身份证号,将其出生年月提取出来转换成中文大写形式,例如:

// 37083220000720189023

// 转换后的内容是

// 二零零零年七月二十日

// 如何将年月日拿出来?


版本一:

package a;


public class a {


public static void main(String[] args) {


String str="37083220000720189023";

//1.截取年月日

String date=str.substring(6,14);/*20000720189023,(6,14)表示6和14都加1,含头不含尾在第七个和第14个之间的都保留,date为20000720。

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

语法:

stringObject.substring(start,stop),

参数描述:start:必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。

stop:可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。

如果省略该参数,那么返回的子串会一直到字符串的结尾。

字符串截取,substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.
substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串.
beginIndex - 起始索引(包括).从0开始
endIndex - 结束索引(不包括).
"unhappy".substring(2) returns "happy"
"hamburger".substring(4, 8) returns "urge"*/


//2.声明一个大写的数组

char[] c={'零','一','二','三','四','五','六','七','八','九'};

//3.将年截取出来

String year=date.substring(0,4);//2000

//声明一个StringBuilder来存储内容

StringBuilder a=new StringBuilder();

for(int i=0;i<year.length();i++){

a.append(c[Integer.parseInt(year.substring(i,i+1))]);/*year.substring(i,i+1)这是一个String的截取字符串的方法,从第i个开始到i+1个。截取之后,转成int类型。c[]的下标=0,1,2,3c[0]='二',c[1]='零'*,c[2]='零'*,c[3]='零'*/

}

a.append("年");/*在二零零零末尾添加新的对象"年"*/

//截取月

String month=date.substring(4,6);/*20000720中保留07*/

//如果这个月份大于9月

if(Integer.parseInt(month)>9){

if(Integer.parseInt(month)==10){

a.append("十");

}else{

//做十一月和十二月

a.append("十");

a.append(c[Integer.parseInt(month.substring(1,2))]);/*07中保留7,c[7]='七'*/

}

}

else{

for(int i=0;i<month.length();i++){

a.append(c[Integer.parseInt(month.substring(i,i+1))]);

}

}

a.append("月");

//截取日

String day=date.substring(6);

/*20000720中保留20,substring(6)相当于substring(6,8),6,8都加1,含头不含尾,在第6个和第8个之间的都保留,8为尾数*/

if(Integer.parseInt(day)>9&&Integer.parseInt(day)<20){

//这里做10号到19号的

if(Integer.parseInt(day)==10){

a.append("十");

}else {

a.append("十");

a.append(c[Integer.parseInt(day.substring(1,2))]);

}

}else if(Integer.parseInt(day)>19&&Integer.parseInt(day)<30){

//这里做20号到29号的

if(Integer.parseInt(day)==20){

a.append("二十");

}else {

a.append("二十");

a.append(c[Integer.parseInt(day.substring(1,2))]);

}

}else if(Integer.parseInt(day)>29&&Integer.parseInt(day)<32){

//这里做30号到31号的

if(Integer.parseInt(day)==30){

a.append("三十");

}else {

a.append("三十");

a.append(c[Integer.parseInt(day.substring(1,2))]);

}

}else{

//小于10号的时候

for(int i=0;i<day.length();i++){

a.append(c[Integer.parseInt(day.substring(i,i+1))]);

}

}

a.append("日");


System.out.println(a.toString());/*如果类中没有定义toString方法,按照以上案例调用时,会输出对象的哈希值。

但哈希值和内存地址有关,嫌烦的话就认为是内存地址,最好不要这么认为,严谨点就是哈希值




}


}

版本二(老师版)

package a;


public class a {


public static void main(String[] args) {

// 提示用户输入一个身份证号,将其出生年月提取出来转换成大写形式,例如:

// 37083219991112189023

// 转换后的内容是

// 一九九九年十一月十二日

// 如何将年月日拿出来?

String str="37083219990627189023";//一九九九

//1.截取年月日

String date=str.substring(6,14);

//2.声明一个大写的数组

char[] cs={'零','一','二','三','四','五','六','七','八','九'};

//3.将年截取出来

String year=date.substring(0,4);//1999

//声明一个StringBuilder来存储内容

StringBuilder sb1=new StringBuilder();

for(int i=0;i<year.length();i++){

sb1.append(cs[Integer.parseInt(year.substring(i,i+1))]);

}

sb1.append("年");

//截取月

String month=date.substring(4,6);

//如果这个月份大于9月

if(Integer.parseInt(month)>9){

if(Integer.parseInt(month)==10){

sb1.append("十");

}else{

//做十一月和十二月

sb1.append("十");

sb1.append(cs[Integer.parseInt(month.substring(1,2))]);

}

}else{

for(int i=0;i<month.length();i++){

sb1.append(cs[Integer.parseInt(month.substring(i,i+1))]);

}

}

sb1.append("月");

//截取日

String day=date.substring(6);

if(Integer.parseInt(day)>9&&Integer.parseInt(day)<20){

//这里做10号到19号的

if(Integer.parseInt(day)==10){

sb1.append("十");

}else {

sb1.append("十");

sb1.append(cs[Integer.parseInt(day.substring(1,2))]);

}

}else if(Integer.parseInt(day)>19&&Integer.parseInt(day)<30){

//这里做20号到29号的

if(Integer.parseInt(day)==20){

sb1.append("二十");

}else {

sb1.append("二十");

sb1.append(cs[Integer.parseInt(day.substring(1,2))]);

}

}else if(Integer.parseInt(day)>29&&Integer.parseInt(day)<32){

//这里做30号到31号的

if(Integer.parseInt(day)==30){

sb1.append("三十");

}else {

sb1.append("三十");

sb1.append(cs[Integer.parseInt(day.substring(1,2))]);

}

}else{

//小于10号的时候

for(int i=0;i<day.length();i++){

sb1.append(cs[Integer.parseInt(day.substring(i,i+1))]);

}

}

sb1.append("日");

System.out.println(sb1.toString());

}


}


Java oop:输入身份证号,将其出生年月提取转换成中文形式(详析哈希值等,有视频版)的评论 (共 条)

分享到微博请遵守国家法律