Java » Número al Azar en Java
Seguro que más de una vez habéis jugado a esto. La idea es simple. Una persona piensa un número entre 1 y 10, mientras que otra persona intenta adivinarlo. Para ello, la persona que conoce el número le va diciendo si el número que busca es mayor o menor que el que ha dicho.
En nuestro caso, quien pensará en el número y dirá si lo dicho es mayor o menor será un programa Java.
Es recomendable el leer los artículos "Leer caracteres por consola en Java" y "Número aleatorio en Java". Los cuales nos ayudarán mucho en la realización de nuestro juego.
Lo primero será generar un número aleatorio entre 1 y 10. Para ello utilizaremos el método .random() de la clase Math. Como esta clase genera números aleatorios del 0.1 al 0.9 tendremos que multiplicarlo por 10 y sumarle un 1.
numeroAleatorio = (int) (Math.random()*10+1);
Posteriormente tendremos que pedir por consola el número. Para leer el número nos apoyaremos en la clase System.in
numeroTeclado = System.in.read();
Hay que recordar que el número leído estará almacenado en carácter ASCII dentro de un tipo de dato int. Un buen truco para calcular el número real es restarle el valor ASCII del carácter que representa al número cero.
Los pasos para obtener el número serán los siguientes:
int cero = (int)'0'; numeroTeclado = System.in.read(); numeroTeclado = numeroTeclado - cero;
Con el número aleatorio y el número obtenido por consola tendremos que realizar algunas comprobaciones. Para indicarle al usuario si el número buscado es mayor, menor o si acierta.
if (numeroTeclado > numeroAleatorio) {
System.out.println ("El número buscado es menor");
}
if (numeroTeclado < numeroAleatorio) {
System.out.println ("El número buscado es mayor");
}
Todo esto lo tendremos que tener en un bucle, hasta que acierte el usuario.
Lo último que tendremos que tener en cuenta es que cuando el usuario teclea un número y pulsa la tecla intro se generan tres caracteres ASCII.
carácter ASCII del numero + 13 + 10
El carácter 13 y 10 representan el salto de línea y retorno de carro. Es por ello que entre cada lectura habrá que saltarse la lectura de dos caracteres. Esto lo conseguimos mediante el método .skip(numerocaracteres).
System.in.skip(2);
Visualizar el ejemplo | Descargar el código
Artículos relacionados:






Junio 25, 2007 #
No se si puede decirme como seria una vez encontrado los numeros aleatorios el saber cual de ellos es el menor y cal es el mayor de todos los numeros aleatorios encontrados
No como se hace ebn este ejemplo q se ingresa por consola un dato.
Gracia
Junio 26, 2007 #
Hola Alex,
Hoy he publicado el artículo “Máximo y mínimos número de un conjunto”. Mezclandolo con la generación de números aleatorios puede servirte para tu cometido.
Espero te sea de ayuda.
Septiembre 5, 2007 #
disculpa pero si se quiere que la funcion Math.random escoga un numero al azar de un conjunto de numeros por ejemplo 2,4,6,8,10
Septiembre 7, 2007 #
[...] Abraham nos preguntaba en el artículo de Numero al Azar en Java sobre como se podría sacar un número al azar de un subconjunto acotado de elementos. [...]
Septiembre 7, 2007 #
Abraham, te he publicado el código en Numero Aleatorio de un Conjunto con Java Math.
Me pareció muy buena pregunta.
Septiembre 19, 2007 #
muchas gracias me ha servido de mucho, en verdad te lo agradesco
Junio 19, 2008 #
Excelente tu pagina, me han gustado las expliaciones, pero me surge una duda, el metodo System.in.read() solo lee de a un solo caracter????, no existe la posbilidad de leer digamos 3 digitos y haga concatenacion de estos, me explico necesito leer por consola digamos el numero 999 como hago????
Muchas gracias
Julio 1, 2008 #
una pregunta..¿como se generan los parametros en java?
Marzo 26, 2009 #
pregunta___
como puedo escoger una variable ya determinada al azar
ej: int= p como hago para ecoger p o q al azar????
int= q
Octubre 28, 2010 #
Podrias publicar el codigo en Java del siguiente ejercicio que te muestro,es de un trabajo:
Crear un vector de 10 o n elementos con numeros aleatorios .Se debe crear una funcion que no permita que se repita los numeros generados
(aleatorios) el cual se le asignara al vector.
De preferencia hazlo de forma simple ,ya que recien estoy aprendiendo programacion con el metodo de resolucion que dio pista mi profesor y es utilizar y asignar un valor boolean =false al comienzo de una funcion creo .