Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Pasandav en 26 de Octubre 2015, 08:35
-
Cuelgo el código de este ejercicio.
Espero que sea correcto.
Gracias:
import java.util.Random;
/**
* Write a description of class AdivinaNumero here.
*
* @author (Pasandav)
* @version (a version number or a date)
*/
public class AdivinaNumero
{
public AdivinaNumero()
{
}
public static void main (String [] args)
{
Random numeroAleatorio;
numeroAleatorio = new Random();
EntradaDeTeclado teclado = new EntradaDeTeclado();
int adivina = (int) numeroAleatorio.nextInt(100);
System.out.println("ADIVINA EL ALEATORIO" + adivina);
System.out.println("Se ha generado un número aleatorio entero entre 1 y 100, intente adivinarlo: " + adivina);
teclado.pedirEntrada();
int respuesta= Integer.valueOf (teclado.getEntrada());
do {
respuesta= Integer.valueOf (teclado.getEntrada());
if (respuesta == adivina){ System.out.println("Vaaalgame que listo, has acertado!! ");}
else{
System.out.println("Intentalo otra vez: ");
teclado.pedirEntrada();}
}while (respuesta!=adivina);
}
}
-
Modifico el código antes de que me respondais:
Le ha quitado la repetición del método teclado.pedirEntrada y la inicialización de la variable respuesta antes del while. Creo que así está mas limpio el código.
Gracias.
import java.util.Random;
/**
* Write a description of class AdivinaNumero here.
*
* @author (Pasandav)
* @version (a version number or a date)
*/
public class AdivinaNumero
{
public AdivinaNumero()
{
}
public static void main (String [] args)
{
Random numeroAleatorio;
numeroAleatorio = new Random();
EntradaDeTeclado teclado = new EntradaDeTeclado();
int adivina = (int) numeroAleatorio.nextInt(100);
System.out.println("ADIVINA EL ALEATORIO" + adivina);
System.out.println("Se ha generado un número aleatorio entero entre 1 y 100, intente adivinarlo: " + adivina);
int respuesta=0;
while (respuesta!=adivina){
teclado.pedirEntrada();
respuesta= Integer.valueOf (teclado.getEntrada());
if (respuesta == adivina){ System.out.println("Vaaalgame que listo, has acertado!! ");}
else{ System.out.println("Intentalo otra vez: ");}
}
}
}
-
Hola deberías corregir:
El método nextInt (ver https://docs.oracle.com/javase/8/docs/api/java/util/Random.html) se define así:
public int nextInt(int bound)
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)
Tu código entonces no cumple con que el aleatorio esté entre 1 y 100, sino que está entre 0 y 99.
El enunciado del ejercicio dice:
El usuario introducirá un número y si el número aleatorio generado por el ordenador es menor deberá indicarse “No has acertado: el número es menor. Prueba otra vez”. Si el usuario introduce un número menor que el número aleatorio deberá indicarse “No has acertado: el número es mayor”
Tu código no indica cuándo el número introducido es menor o mayor, no cumple lo que pide el ejercicio.
Puedes consultar la solución viendo otro hilo como https://www.aprenderaprogramar.com/foros/index.php?topic=2277.0
Saludos
-
Cuelgo solo el main.
Espero opinión.
Muchas gracias.
import java.util.Random;
/**
* Write a description of class AdivinaNumero here.
*
* @author (Pasandav)
* @version (a version number or a date)
*/
public class AdivinaNumero
{
public AdivinaNumero()
{
}
public static void main (String [] args)
{
Random numeroAleatorio;
numeroAleatorio = new Random();
EntradaDeTeclado teclado = new EntradaDeTeclado();
int adivina = numeroAleatorio.nextInt(100)+1;
System.out.println("ADIVINA EL ALEATORIO" + adivina);
System.out.println("Se ha generado un número aleatorio entero entre 1 y 100, intenta adivinarlo: ");
int respuesta=0;
while (respuesta!=adivina){
teclado.pedirEntrada();
respuesta= Integer.valueOf (teclado.getEntrada());
if (respuesta >0 && respuesta<100){
if (respuesta == adivina){ System.out.println("CORRECTO!! ");}
else if (respuesta > adivina ){System.out.println("No has acertado, el número que buscas es menor, intentalo otra vez: ");}
else {System.out.println("No has acertado, el número que buscas es mayor, intentalo otra vez: ");}
}else{System.out.println("Introduce números de 1 a 100: ");}
}
}
}
-
Me da error al compilar porque falta la clase EntradaDeTeclado, ¿puedes pegar el código? Pega siempre el código de todas las clases que intervengan, incluso si ya lo has puesto en otros hilos para no tener que estar buscando, así podemos revisar con más agilidad. Saludos.
-
Ok. Perdona.
import java.util.Scanner; //Importación de la clase Scanner desde la biblioteca Java
public class EntradaDeTeclado { // Definimos la clase EntradaDeTeclado aprenderaprogramar.com
private String entradaTeclado; //Variable de instancia (campo) del método
//Constructor
public EntradaDeTeclado () {
entradaTeclado=""; } //Cierre del constructor
public void pedirEntrada () { //Método de la clase
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine ();
} //Cierre del método pedirEntrada
public String getEntrada () {
return entradaTeclado;
} //Cierre del método getEntrada
} //Cierre de la clase
-
Lo veo muy bien, el único detalle a corregir if (respuesta >0 && respuesta<=100){ poner un = para que si introducimos un 100 no nos diga que introduzcamos un número de 1 a 100 puesto que el 100 está incluido
Saludos
-
Ok. Lo haré.
Muchas gracias.