Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Campillo en 12 de Agosto 2015, 22:01
-
Código propuestos como solución al ejercicio CU00669B:
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++;
}
}
}
-
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
-
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;
}
}
}
}
-
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:
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