You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

校验西班牙身份证(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 05:54:02