Autor Tema: Cómo diseñar un algoritmo en Java con while Arrays, arreglos CU00669B  (Leído 1916 veces)

Campillo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
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++;
        }
       
    }
}
« última modificación: 15 de Agosto 2015, 18:25 de Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2063
    • Ver Perfil
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


Campillo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
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;
            }
        }
    }
}

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2063
    • Ver Perfil
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

 

Esto es un laboratorio de ideas...
Aprender a programar

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