日期:2014-05-20  浏览次数:20665 次

java上机试题,大家来练练手
现在给你一个新一代新身份证号,默认为18位号码,如果该号码是15位的话,请在第6位后面加上“19”,并在最后一位加上“X”,如果是18位,则不变。

------解决方案--------------------
package cn.dzr.shenfenzheng;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class VerifyIdentityCard
{

public static void main(String[] args) throws Exception
{
P("请输入身份证号....");
P("如果想结束输入,请输入  bye ....");
// byte[] buff = new byte[100];
// int len=0;

BufferedReader bufIn=new BufferedReader(new InputStreamReader(System.in));

String str=null;
String regex1 = "[0-9]{15}";
String regex2 = "[0-9]{18}";
while((str = bufIn.readLine())!="bye")
{
if(str.equals("bye"))
{
P("bye");
break;
}
else if(str.matches(regex1))
{
StringBuilder sb = new StringBuilder(str);
sb.append('X');
sb.insert(6, "19");
P("你输入的身份证号码为15位:");
P(sb);
}
else if(str.matches(regex2))
{
P("你输入的身份证号码为18位:");
P(str);
}
else
{
P("你输入的身份证号码不正确!请重新输入....");
}

}



}

private static<T> void P(T t)
{
System.out.println(t);
}

}

------解决方案--------------------
一行代码搞定
String transformString(String input) {
  return input.length() == 15 ? input.substring(0, 6) + "19" + code.substring(6, 15) + "X" :  input;
}

------解决方案--------------------
stringbuffer   str = new stringbuffer()
String s = "你的号码";
if(s长度==15){
str.append(s.substring(0,5)).append("19").append(s.substring(5));
return str;
}else if(s长度==18){
...
}else{
syso("号码不存在,确认后,重新输入...");
}