ここでは、JavaでDNIを検証する可能性のあるソリューションを紹介します。

パブリッククラスDNI {
    private static final string [] Lettersdni = {"t"、 "r"、 "w"、 "a"、 "g"、 "m"、 "、"、 "f"、 "p"、 "d" x " 、 "b"、 "n"、 "j"、 "z"、 "s"、 "q"、 "v"、 "h"、 "l"、 "c"、 "k、" e "};
    
    public static boolean isdnivalid（string dni）{
        if（dni == null || dni.length（）！= 9）{
            falseを返します。
        }
        int numpart = integer.parsint（dni.substring（0、8））;
        int rest = numpart％23;
        文字列歌詞= dni.substring（8）;
        return letter.equals（lettersdni [rest]）;
    }
}

ISDNNIVALID関数は、DNIを表す文字列を取り、それが有効かどうかを検証します。最初に、文字列が無効であるか、9とは異なる長さがあるかどうかを確認します。その場合、falsが返されます。次に、DNIの数値部分を抽出して23で割っています。分割の残りの部分は、対応する文字を決定するために使用され、DNI文字列に記載されている文字と比較されます。文字が一致した場合、trueが返されます。そうしないと、falseが返されます。
Aquí te muestro una posible solución en Java para validar un DNI:

public class DNI {
    private static final String[] letrasDNI = { "T", "R", "W", "A", "G", "M", "Y", "F", "P", "D", "X", "B", "N", "J", "Z", "S", "Q", "V", "H", "L", "C", "K", "E" };
    
    public static boolean isDNIValid(String dni) {
        if (dni == null || dni.length() != 9) {
            return false;
        }
        int numPart = Integer.parseInt(dni.substring(0, 8));
        int rest = numPart % 23;
        String letra = dni.substring(8);
        return letra.equals(letrasDNI[rest]);
    }
}

La función isDNIValid toma un string que representa el DNI y valida si es válido o no. Primero se comprueba si el string es nulo o tiene una longitud distinta a 9, en cuyo caso se devuelve false. Luego, se extrae la parte numérica del DNI y se divide entre 23. Se utiliza el resto de la división para determinar la letra correspondiente y se compara con la letra proporcionada en el string del DNI. Si la letra coincide, se devuelve true, en caso contrario, se devuelve false.