校验西班牙身份证(DNI)字母正确性的Java程序开发需求
西班牙身份证号校验Java程序实现
功能要求
- 支持用户输入完整西班牙身份证号(含末尾校验字母,示例格式:19452100G)
- 自动校验输入身份证号的末尾字母是否符合官方规则
- 校验不通过时直接输出对应的正确校验字母
完整可运行代码
import java.util.Scanner; public class SpanishIdValidator { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入完整西班牙身份证号(含末尾校验字母):"); String input = sc.nextLine().trim().toUpperCase(); sc.close(); // 校验输入格式合法性 if (input.length() != 9) { System.out.println("输入格式错误:身份证号需为8位数字加1位校验字母共9位"); return; } int idNum; try { idNum = Integer.parseInt(input.substring(0, 8)); } catch (NumberFormatException e) { System.out.println("输入格式错误:前8位必须为纯数字"); return; } char inputLetter = input.charAt(8); char correctLetter = calculateLetter(idNum); if (inputLetter == correctLetter) { System.out.println("校验通过:输入的身份证号合法"); } else { System.out.printf("校验失败:输入的校验字母错误,正确的校验字母应为:%c", correctLetter); } } // 字符串实现版本校验字母计算 private static char calculateLetter(int id){ String caracteres = "TRWAGMYFPDXBNJZSQVHLCKE"; int resto = id % 23; return caracteres.charAt(resto); } // 数组实现版本校验字母计算,两种实现效果一致,按需选用即可 @SuppressWarnings("unused") private static char calcularLetraArray(int dni){ char[] caracteres = {'T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'}; int resto = dni % 23; return caracteres[resto]; } }
使用说明
- 编译运行上述Java程序后,按照提示输入完整的带字母的身份证号即可
- 程序自动兼容输入字母的大小写,输入小写字母也会自动转大写校验
- 输入格式不符合要求时会给出明确的错误提示,无需手动处理输入格式问题
内容的提问来源于stack exchange,提问作者Emmy
相关产品推荐
相关产品推荐

