entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Asignar letra del dni

Hola, tengo esta funcion, para asignar la letra del dni.

public static String obtenerLetra(int numero) {
        //Compruebo que la longitud de numero sea mayor a 8
        String numS = Integer.toString(numero);
        if(numS.length()!=8) {
            System.out.println("El dni debe tener 8 digitos");
        }else {
            //Letra es la letra que vamos ha adjuntar
            String letra;
            //Array de las letras
            String [] letras = {"T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"};
            //Va a contener la suma del numero
            int suma = 0;
            //Creo una variable para ir moviendome por el numero, que empieza en la longitud menos 1, porque una vez con el ultimo, ya no tengo que ir mas.
            int i =0;
            //Resto de num%23
            int total = 0;
            //Asi, cojo el numero de dcha a izq, lo divido entre 10 y me quedo el resto, que es el numero. Luego recorro el array sumando todas las posiciones
            while(numero>0) {
                //Total, va sumando los numeros que va cogiendo, y numero, pasa a ser el nuevo numero sin el ultimo digito
                suma += numero%10;
                numero = numero/10;
                i++;
            }
            System.out.println("Suma"+suma);
            total = suma%23;
            System.out.println("total"+total);

            letra = letras[total];  
            return letra;
        }
        return "";
    }

No se porque esta mal, no es error de codigo, funciona, pero no me coge la letra que deberia ser, por ejemplo, de este dni, tiene que salir la G y me da la M. 27283064G
Gracias por la ayuda.

1 Respuesta

2votos

magarzon Puntos29810

Creo que te has liado un poco con el algoritmo de la letra del DNI.

No sé por qué haces esa suma de cada dígito del número, cuando lo que tienes que hacer es numero%23 simplemente. Y de hecho a mí al ejecutar tu código no me da M, si no D.

1voto

cupax comentado

("Icono de facepalm") PEnsaba que era sumar cada numero, y dividirlo entre 23, y me quedaba con el resto. Estaba sumando a papel, el numero, y haciendo el %23 a papel, y estaba bien (claro, la calculadora no se va a confundir)... Fallo mio, que no se leer.

Muchas gracias

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta