feed twitter facebook LinkedIn facebook

Java » Número al Azar en Java

abril 8, 2007 por Víctor Cuervo 12 Comentarios Imprimir Imprimir

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

tags: ,

Artículos relacionados:

12 comentarios »

RSS feed para los comentarios de esta entrada.TrackBack URI

1 2
  1. alex
    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

  2. lineadecodigo
    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.

  3. abraham
    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

  4. Linea de Codigo » Numero aleatorio de un conjunto con Java.Math
    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. [...]

  5. lineadecodigo
    septiembre 7, 2007 #

    Abraham, te he publicado el código en Numero Aleatorio de un Conjunto con Java Math.

    Me pareció muy buena pregunta.

  6. abraham
    septiembre 19, 2007 #

    muchas gracias me ha servido de mucho, en verdad te lo agradesco

  7. Eduardo Ballesteros
    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

  8. lola
    julio 1, 2008 #

    una pregunta..¿como se generan los parametros en java?

  9. jorge
    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

  10. Marco Rivera del Carpio Nontol
    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 .

1 2

Deja un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*