java 程序判断身份证最后一位是不是大写X
发布网友
发布时间:2022-04-29 22:28
我来回答
共5个回答
热心网友
时间:2022-06-24 13:57
public class $ {
public static void main(String[] args) {
String id = "12345678901234567x";
// 由于身份证号最多有一个x,所以可以直接替换
id = id.toUpperCase();
System.out.println(id);
}
}
热心网友
时间:2022-06-24 13:58
将身份证号截取装进字符数组,然后判断最后一位是否等于X的ascall码,就OK了。。
热心网友
时间:2022-06-24 13:58
直接转换成大写!就行吧!追问太简单了,怎么截断最后一位?怎么转换?
热心网友
时间:2022-06-24 13:59
package com.uttest;
import com.util.*;
import javax.swing.*;
import java.awt.event.*;
public class IDTestCase extends JFrame{
JTextField txtIDNumber;
JButton btnCheck;
public IDTestCase(){
super("检查身份证号");
setBounds(0,0,400,60);
setResizable(false);
setLayout(new java.awt.FlowLayout());
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
txtIDNumber=new JTextField(18);
add(txtIDNumber);
btnCheck=new JButton("检查");
btnCheck.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,IDNumberChecker.isLegal(txtIDNumber.getText())?"合法":"非法","检查结果",JOptionPane.INFORMATION_MESSAGE);
}
});
add(btnCheck);
setVisible(true);
}
public static void main(String[] args){
new IDTestCase();
}
}
//IDNumberCheck.java
package com.util;
public class IDNumberChecker{
public static boolean isLegal(String IDNumber){
boolean result=IDNumber.matches("[0-9]{15}|[0-9]{17}[0-9X]");
if(result){
int year,month,date;
if(IDNumber.length()==15){
year=Integer.parseInt(IDNumber.substring(6,8));
month=Integer.parseInt(IDNumber.substring(8,10));
date=Integer.parseInt(IDNumber.substring(10,12));
}
else{
year=Integer.parseInt(IDNumber.substring(6,10));
month=Integer.parseInt(IDNumber.substring(10,12));
date=Integer.parseInt(IDNumber.substring(12,14));
}
switch(month){
case 2:result=(date>=1)&&(year%4==0?date<=29:date<=28);break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:result=(date>=1)&&(date<=31);break;
case 4:
case 6:
case 9:
case 11:result=(date>=1)&&(date<=31);break;
default:result=false;break;
}
}
return result;
}
}
热心网友
时间:2022-06-24 13:59
这种需求用正则表达式去处理很方便:
public static void main(String[] args) {
String kard = "12345678901020304X";
Pattern p = Pattern.compile("(\\d{15,17}.*)");
//判断是否身份证格式
Matcher mat = p.matcher(kard);
if(!mat.find()){
System.out.println("不是身份证号码!");
return;
}
//判断是否以X结尾
p = Pattern.compile("(\\d{15,17}X)");
mat = p.matcher(kard);
if(mat.find()){
System.out.println("存在以X结尾的号码:" + mat.group(1));
}else{
System.out.println("以X结尾的身份中号码不存在!");
}
}