Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Campillo en 12 de Agosto 2015, 22:01

Título: Cómo diseñar un algoritmo en Java con while Arrays, arreglos CU00669B
Publicado por: Campillo en 12 de Agosto 2015, 22:01
Código propuestos como solución al ejercicio CU00669B:

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

public class Test70
{
    public static void main(String [] args){
        String[] mes = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
        String mesSecreto = mes[9];
        int i = 0;
        while(true){
            if ( i == 0 ){
                System.out.print("Adivine el mes secreto. Introduzca el nombre del mes con minusculas:");
                Scanner escribirMes = new Scanner(System.in);
                String mesOculto = escribirMes.nextLine();
                if ( ! mesOculto.equals(mesSecreto)){
                    System.out.print("No ha acertado.Intente adivinarlo introduciendo otro mes:");
                }else{
                    System.out.print("¡Ha acertado!");
                }
            }else{
                Scanner escribirMes2 = new Scanner(System.in);
                String mesOculto2 = escribirMes2.nextLine();
                 if ( ! mesOculto2.equals(mesSecreto)){
                    System.out.print("No ha acertado.Intente adivinarlo introduciendo otro mes:");
                }else{
                    System.out.println("¡Ha acertado!");
                    break;
                }
            }
            i++;
        }
       
    }
}
Título: Re:Cómo diseñar un algoritmo en Java con while Arrays, arreglos CU00669B
Publicado por: Alex Rodríguez en 15 de Agosto 2015, 18:27
Hola Campillo, tu código tiene el defecto de diseño debido al while (true) que se explica en este hilo: www.aprenderaprogramar.com/foros/index.php?topic=3091, por ello deberías corregirlo haciendo un planteamiento basado en buenas prácticas.

Puedes consultar una solución correcta al ejercicio en www.aprenderaprogramar.com/foros/index.php?topic=3091

Saludos

Título: Re:Cómo diseñar un algoritmo en Java con while Arrays, arreglos CU00669B
Publicado por: Campillo en 15 de Agosto 2015, 19:26
Código: [Seleccionar]
import java.util.Scanner;

public class Test70
{
    public static void main(String [] args){
        String[] mes = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
        String mesSecreto = mes[9];
        System.out.print("Adivine el mes secreto. Introduzca el nombre del mes con minusculas:");
        Scanner escribirMes = new Scanner(System.in);
        String mesOculto = escribirMes.nextLine();
        if ( ! mesOculto.equals(mesSecreto) ){
            System.out.print("No ha acertado.Intente adivinarlo introduciendo otro mes:");
        }else{
            System.out.println("¡Ha acertado!");
        }
        while( ! mesOculto.equals(mesSecreto) ){
            Scanner escribirMes2 = new Scanner(System.in);
            String mesOculto2 = escribirMes2.nextLine();
            if ( ! mesOculto2.equals(mesSecreto)){
                System.out.print("No ha acertado.Intente adivinarlo introduciendo otro mes:");
            }else{
                System.out.println("¡Ha acertado!");
                break;
            }
        }
    }
}
Título: Re:Cómo diseñar un algoritmo en Java con while Arrays, arreglos CU00669B
Publicado por: Alex Rodríguez en 16 de Agosto 2015, 13:30
Ahora bastante mejor pero debes tener en cuenta lo siguiente:

- No debes usar break dentro de un bucle excepto en casos en los que resulte verdaderamente necesario. En este ejercicio no es necesario.

- En el diseño del código buscamos ser lo más breves, limpios y claros posibles. Hay que evitar usar más variables de las necesarias, usar más condicionales o más bucles de los necesarios, etc.

Aquí estaría el código simplificado para que lo compares con el código que habías propuesto tú y en los próximos ejercicios trates de tenerlo en cuenta:

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

public class Test70
{
    public static void main(String [] args){
        String[] mes = {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
        String mesSecreto = mes[9];
        System.out.print("Adivine el mes secreto. Introduzca el nombre del mes con minusculas: ");
        Scanner escribirMes = new Scanner(System.in);
        String mesOculto = escribirMes.nextLine();
        while( ! mesOculto.equals(mesSecreto) ){
            System.out.print("No ha acertado.Intente adivinarlo introduciendo otro mes: ");
            escribirMes = new Scanner(System.in);
            mesOculto = escribirMes.nextLine();
               
        }
        System.out.println("¡Ha acertado!");
    }
}

Saludos