Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: DRANXZ88 en 04 de Junio 2015, 21:55
-
Clase entrada del teclado
package ejercicioscu00669b;
import java.util.Scanner;
public class EntradaDeTeclado {
private String entradaTeclado;
Scanner sc = new Scanner(System.in);
public EntradaDeTeclado() {
entradaTeclado = "";
}
public String agregarMes() {
entradaTeclado = sc.nextLine();
return entradaTeclado;
}
public String getEntrada() {
return entradaTeclado;
}
}
clase principal main
package ejercicioscu00669b;
public class EjerciciosCu00669B {
public static void main(String[] args) {
String[] meses = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
"agosto", "setiembre", "octubre", "noviembre", "diciembre"};
String mes;
String mesSecreto = meses[9];
EntradaDeTeclado entrada = new EntradaDeTeclado();
System.out.println("Adivine el mes secreto. Introduzca el nombre del mes en minúsculas:");
mes = entrada.agregarMes();
for (int i = 0; i < meses.length; i++) {
if (mesSecreto.equals(mes)) {
System.out.println("¡Ha acertado!");
break;
} else {
System.out.println("No ha acertado. Intente adivinarlo introduciendo otro mes:");
mes = entrada.agregarMes();
}
}
}
}
-
Hola!
He estado revisando tu código y funciona bien cumpliendo con la consigna del ejercicio.
Sin embargo me gustaría hacerte una observación:
En tu código has planteado un ciclo for con un condicional if else para resolverlo, escapando con un break cuando se dá con el mes elegido.
Creo que hubiera sido más acertado y elegante no utilizar un for con un if else en este caso, y utilizar más bien un ciclo while.
Por regla general se debe evitar el uso de escapes con break (salvo que sea necesario).
A continuación te planteo el mismo ejercicio resuleto con un while para que lo analices.
package ejercicioscu00669b;
public class EjerciciosCu00669B {
public static void main(String[] args) {
String[] meses = {"enero", "febrero", "marzo", "abril", "mayo", "junio", "julio",
"agosto", "setiembre", "octubre", "noviembre", "diciembre"};
String mes;
String mesSecreto = meses[9];
EntradaDeTeclado entrada = new EntradaDeTeclado();
System.out.println("Adivine el mes secreto. Introduzca el nombre del mes en minúsculas:");
mes = entrada.agregarMes();
while (!mes.equals(mesSecreto)){
System.out.print("No ha acertado. Intente adivinarlo introduciendo otro mes: ");
mes = entrada.agregarMes();
}
System.out.println("¡Ha acertado!");
}
}
-
Así luego yo quería hacer desde el principio plantee asi pero no sabia como era para poner distinto cuando usaba .equals por eso plantee de otra forma pero ahora ya veo como se hace distinto con .equals gracia
-
Buenas, este es mi codigo:
import java.util.*;
public class ArraysN69 {
public static void main (String [ ] args) {
System.out.println ("Empezamos el programa mes secreto");
String [ ] mesesYear = new String [ ] {"enero","febrero","marzo",
"abril","mayo","junio",
"julio","agosto","septiembre",
"octubre","noviembre","diciembre"};
String mesSecreto = mesesYear[3];
while (true) {
System.out.println ("Adivine el mes secreto. Introduzca el nombre del mes q=Salir");
EntradaDeTeclado entrada1 = new EntradaDeTeclado();
System.out.println ("Gracias");
if (entrada1.getEntrada().toLowerCase().equals("q")) {
System.out.println ("Salida");
break;
}
else if (entrada1.getEntrada().toLowerCase().equals(mesSecreto)) {
System.out.println (" ¡Ha acertado!, Felicitaciones ");
break;
}
else{
System.out.println ("No ha acertado. Intente adivinarlo introduciendo otro mes");
}
}
} //Cierre del main
-
Hola OCi cuando quieras pegar tu solución a un ejercicio abre mejor un nuevo tema, no respondas en un tema ya abierto
También ten en cuenta que para pegar código debes hacerlo como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 para que quede bien
Sobre tu código, comentarte que usas while(true) y esto no es correcto, lee la explicación en https://www.aprenderaprogramar.com/foros/index.php?topic=2570.0
Saludos