* 定义一个方法,输入一个身份证号码(18)位,最终返回一个字符串,格式如下:“尊敬的男士(女士),您是****年**月**日出生的。”
* 要求:如果输入的身份证不是18位,或者格式不正确(包含非数字字符,除了最后一位的X除外)则返回一个字符串“您输入的身份证号码有误”
* */
import java.util.Scanner
public class JudgeID {
public static void main(String[] args){
Scanner reader = new Scanner(System.in)
System.out.println("请输入您的id号码")
String id = reader.next()
System.out.println(judgeID(id))
}
public static String judgeID(String IDNumber){
int len = IDNumber.length()
String wrongMsg = "您输入的身份证号有误"
String correctMsg = null
char lastChar = IDNumber.charAt(len-1)
String year = null
String month = null
String day = null
if(len != 18){
return wrongMsg
}
for(int i = 0i <len-1i++){
if(IDNumber.charAt(i) <'0' || IDNumber.charAt(i) >'9' ){
return wrongMsg
}
}
if(lastChar != 'X' &&lastChar >'0' &&lastChar <'9'){
return wrongMsg
}
//如果身份证格式是没有问题的,那个打印年月日信息
year = IDNumber.substring(6,10)
month = IDNumber.substring(10,12)
day = IDNumber.substring(12,14)
correctMsg = "您是"+year+"年"+month+"月"+day+"日出生!"
return correctMsg
}
}
import java.util.*public class test{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in)
System.out.println("请输入18位的身份号码:")
String s="^[0-9]{17}([0-9]|x)"//正则表达式
String str=in.next()
while(!str.matches(s)){//用mathes方法匹配正则表达式,判断是否合法
System.out.println("输入错误,请重新输入:")
str=in.next()
}
System.out.println("生日:"+str.substring(6,10)+"年"+str.substring(10,12)+"月"+str.substring(12,14)+"日")
System.out.println(Integer.parseInt(str.substring(14,15))%2==0?"女":"男")
}
}
如果简单点,只判断身份证是不是18位就行了,比如是
if(f1.sfzh.value.length!=18) { alert("身份证号为空或不足18位") return false }
如果要复杂点,就要用身份证的计算规则来验证了,可以参照这个(链接在电脑上才能显示)网页链接
用链接中的方法的话要改一下,将文中的 alert("恭喜通过验证啦!")均改为return true其它的均改为return false(也就是成功的均return true失败的return false)
然后你上面的判断就可以改为if(!(f1.sfzh.value.length==18 && validateIdCard
(f1.sfzh.value))) { alert("身份证号不足18位或无效") return false }