Autor Tema: Cómo el mismo código puede ser refactorizado para mayor claridad Java CU00657B  (Leído 2621 veces)

SonyEd

  • Sin experiencia
  • *
  • Mensajes: 13
    • Ver Perfil
Buen día, quisiera saber si el código del ejercicio del curso gratuito básico de Java Pedir datos en Java por consola (teclado). Escape backslash. System.out.print. Salto de línea \n (CU00657B) está correcto. Gracias.

Código: [Seleccionar]
import java.util.Scanner;

public class PedirDatos{
    public static void main (String[] args){
        System.out.println("Introducir una cadena");
        String cadena="";
        Scanner entradaScanner = new Scanner(System.in);
        cadena = entradaScanner.nextLine();
        if(cadena.length()<5){
            if(cadena.substring(0,1).equals("a") || cadena.substring(0,1).equals("A")){
                System.out.println("La cadena introducida tiene menos de 5 caracteres y empieza por la letra \"a o A\"");
            }else{
                System.out.println("La cadena introducida tiene menos de 5 caracteres y no empieza por la letra \"a o A\"");   
            }
        }else{
            if(cadena.length()>4 && cadena.length()<16){
                if(cadena.substring(0,1).equals("a") || cadena.substring(0,1).equals("A")){
                    System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y empieza por la letra \"a o A\"");
                }else{
                    System.out.println("La cadena introducida tiene menos de 5 caracteres y no empieza por la letra \"a o A\"");   
                }
            }else{
                if(cadena.length()>=15){
                    if(cadena.substring(0,1).equals("a") || cadena.substring(0,1).equals("A")){
                        System.out.println("La cadena introducida tiene mas de 15 caracteres y empieza por la letra \"a o A\"");
                    }else{
                        System.out.println("La cadena introducida tiene mas de 15 caracteres y no empieza por la letra \"a o A\"");   
                    }
                }
            }
        }
    }
}
« Última modificación: 14 de Junio 2018, 19:13 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, el código funciona dando los resultados esperados. Sin embargo no es un código que obtendría una buena calificación si fuera evaluado. Los motivos para ello son:

- Repetición de código: por ejemplo se repite más de una vez if(cadena.substring(0,1).equals("a") cuando realmente solo sería necesario una vez en el código

- Anidamiento de los if poco legible: en general cuanto más fácil de entender y claro sea el código, mejor. Si puede resolverse en 20 líneas en lugar de en 40, en general mejor.

Puede compararse la solución dada con esta otra https://aprenderaprogramar.com/foros/index.php?topic=2873.0 y observar gracias a qué estrategias se puede conseguir el mismo resultado de una forma más clara y utilizando menos líneas.

Saludos

 

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".