Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: HumbertoAli en 26 de Marzo 2017, 16:52

Título: Java. Lógica para calcular letra DNI español algoritmo utilizado CU00904C
Publicado por: HumbertoAli en 26 de Marzo 2017, 16:52
Acá les dejo mi código del ejercicio planteado... Si pueden revisarlo me seria de ayuda. Es el ejercicio CU00904C del curso avanzado de Java

Citar
En España cada persona está identificada con un Documento Nacional de Identidad (DNI) en el que figura un número y una letra, por ejemplo 56999545W

La letra que sigue al número se calcula siguiendo la metodología que vamos a indicar. Crea un programa que calcule la letra de un DNI a partir del número de DNI que introduzca el usuario. Es decir, se debe pedir el DNI sin la letra por teclado y el programa nos devolverá el DNI completo (con la letra).

Para calcular la letra, se debe tomar el resto de dividir nuestro número de DNI entre 23. El resultado debe estar por tanto entre 0 y 22.

Crea un método obtenerLetra(int numeroDNI) donde según el resultado de la anterior fórmula busque en un array de caracteres la posición que corresponda a la letra. Esta es la tabla de caracteres:

Posición     0   1   2   3  4   5   6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22

Letra            T   R  W A  G  M  Y  F  P  D  X    B   N    J    Z    S   Q    V   H    L   C   K   E

Por ejemplo, si introducimos el  DNI 20267079, el resto de dividirlo por 23 sería 8, luego la letra sería la P, que es la que ocupa esa posicion  en la matriz de caracteres.

class DNI
Código: [Seleccionar]
public class DNI {
    private int numeroDNI;
    private final char [] letras = {'T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'};
   
    public DNI(){
        numeroDNI = 0;
    }
    public DNI(int num){
        this.numeroDNI = num;
    }
    public void setNumeroDNI(int nuevoNum){
        this.numeroDNI = nuevoNum;
    }
    public int getNumeroDNI(){
        return numeroDNI;
    }
    public void obtenerLetra(){
        int resto;
        resto = numeroDNI % 23;
        System.out.println("DNI COMPLETO: "+numeroDNI+letras[resto]);
    }
}

y el main
Código: [Seleccionar]
import java.util.Scanner;/**
 
public class TestDNI {
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
        int numero;
        System.out.print("Por favor, ingrese su numero de DNI: ");
        numero = sc.nextInt();
        DNI dni = new DNI(numero);
        dni.obtenerLetra();
    }
}
Título: Re:arrays (arreglos) unidimensionales.Calcular letra DNI (CU00904C)
Publicado por: pedro,, en 08 de Abril 2017, 19:26
Buenas.

El ejercicio cumple con lo que solicita el enunciado, solo comentarte que el método que llamas obtenerLetra() no es adecuado, puesto que este método lo que hace es calcular la letra correspondiente a numeroDNI  y mostrar por pantalla el número junto con dicha letra.
Para que obtenrLetra() fuese un nombre adecuado el método tendría que devolver la letra calculada.

Saludos. ;D