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: settezza en 19 de Enero 2019, 03:34

Título: Lenguaje de programación Java Nivel Avanzado I Calcular letra DNI (CU00904C)
Publicado por: settezza en 19 de Enero 2019, 03:34
Mi solución al ejercicio CU00904C del tutorial pdf de programación Java avanzada:

Código: [Seleccionar]
public class Ejercicio04 {   
    private static char letra;
    public static void obtenerLetra(double resto){
        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'};       
        for (int i = 0; i < letras.length; i++) {
            if (i == resto) letra = letras[i];
        }
    }
    public static void main(String[] args) {       
        Scanner entrada = new Scanner(System.in);
        int dni;
        double resto;       
        try {
            System.out.print("Ingresa número DNI: ");
            dni = Integer.parseInt(entrada.nextLine());
            resto = dni % 23;
            obtenerLetra(resto);
            System.out.printf("El DNI es %d-%s%n", dni, letra);
        } catch (NumberFormatException e) {
            System.out.println("Solu números");
        }
    }
}
Título: Re:Lenguaje de programación Java Nivel Avanzado I Calcular letra DNI (CU00904C)
Publicado por: César Krall en 19 de Enero 2019, 18:11
Hola! El ejercicio no cumple con lo que se pedía <<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...>> No has creado el método con la signatura pedida.

En este ejercicio no es necesario utilizar double.

Por otro lado el diseño del código no se ve elegante. Estás declarando como atributo de clase estático char letra. No se usa la orientación a objetos.

Que un método como public static void obtenerLetra(double resto) no devuelva un valor es contradictorio con su mismo nombre. Un método que se llame obtenerLetra lo lógico es que devuelva una letra.

Hay una solución correcta en https://aprenderaprogramar.com/foros/index.php?topic=5666.0

Si no has realizado el curso Java desde cero (https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188) es muy recomendable para asentar los fundamentos de conceptos y diseño

Saludos!
Título: Re:Lenguaje de programación Java Nivel Avanzado I Calcular letra DNI (CU00904C)
Publicado por: settezza en 19 de Enero 2019, 20:13
Gracias por los comentarios Cesar, toda crítica constructiva es bien recibida.
SLDS!!!