Autor Tema: Lenguaje de programación Java Nivel Avanzado I Calcular letra DNI (CU00904C)  (Leído 2094 veces)

settezza

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
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");
        }
    }
}
« Última modificación: 19 de Enero 2019, 18:11 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
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!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".