viernes, 1 de julio de 2011

Deitel_Java_6.33 (Adivina un número en Java)

_____________________________________________________________________________________
6.33 Escriba una aplicación que juegue a "adivina un número" de la siguiente manera: su programa elige el número entre 1 y 1000. El jugador escribe su primer intento. Si la respuesta del jugador es incorrecta, su programa debe mostrar el mensaje "Demasiado alto. Intente de Nuevo" o "Demasiado bajo. Intente de Nuevo", para ayudar ayudar a que el jugador "se acerque" a la respuesta correcta. El programa debe pedir al usuario que escriba su siguiente intento. Cuando el usuario escriba la respuesta correcta, muestre el mensaje "Felicidades, Adivinó el número!", y permita que el usuario elija si desea jugar otra vez.  [Nota: la técnica para adivinar empleada en este problema es similar a una búsqueda binaria, que veremos en el capítulo 16, Búsqueda y Ordenamiento].
_____________________________________________________________________________________
Solución:
Este programa, como todos los de éste capítulo, tampoco es difícil. El código puede seguirse, creo, fácilmente a pesar de la ausencia de comentarios que lo documenten. Como todos los programas de éste capítulo, éste está dividido en dos archivos, aunque podría hacerse fácilmente, y tal vez sea lo mejor, en uno solo.

El siguiente código debe guardarse con el nombre UsaDeitel_6_33.java

import java.util.Scanner;

public class UsaDeitel_6_33
{       // Abre clase UsaDeitel_6_33
public static void main(String args[])
  
{      // Abre metodo main
Scanner entero = new Scanner(System.in);
Deitel_6_33 miObjeto = new Deitel_6_33();

int centinela = 0;
 
while ( -1 != centinela )
{     // Abre while
    
// Se llama al metodo Adivina
miObjeto.Adivina();
  
System.out.printf("\nEste programa le propone adivinar un numero. ");
System.out.println("\nQuiere jugar otra vez? Introduzca un entero, -1 para terminar");
centinela = entero.nextInt();
}        // Cierra while

}      // Cierra metodo main
}       // Cierra clase UsaDeitel_6_33

El siguiente código debe guardarse con el nombre Deitel_6_33.java

import java.util.Scanner;
import java.util.Random;

public class Deitel_6_33

{       // Abre Deitel_6_33

public void Adivina()
{       // Abre metodo adivina
int numero;
int recibido;
int Escala = 1000;
Random aleatorio = new Random();
Scanner entrada = new Scanner(System.in);
  
numero = aleatorio.nextInt(Escala) + 1;
  
System.out.printf("\nTengo un numero entero entre 1 y %d. ", Escala);
System.out.println("Puede adivinarlo?");
System.out.println("\nPor favor introduzca un entero: \n");
recibido = entrada.nextInt();

while ( recibido != numero )
{    // Abre while
if ( recibido > numero )
{  // abre if
System.out.println("\nEl numero es muy alto, por favor intenta de nuevo.");
recibido = entrada.nextInt();
}    // Cierra if 

else
{   // abre else 
System.out.println("\nEl numero es muy bajo, por favor intenta de nuevo.");
recibido = entrada.nextInt();
}    // Cierra else 

}   // Cierra while

System.out.println("\nHA ADIVINADO EL NUMERO!");

}            // Cierra metodo adivina
}       // Cierra Deitel_6_33


7 comentarios:

  1. sip, pero como podría hacer por ejemplo
    que se vaya acercando y me diga "muy caliente" ??? o muy frio?

    ResponderEliminar
    Respuestas
    1. Hola, Erick. En éste caso puedes crear un método distinto e independiente que reciba el valor que ingresa el usuario y lo compare con el numero. De ahí puedes definir condicionales como

      if ( 10 <= numero - recibido)
      System.out.println("\nMuy caliente\");

      etc.
      Me parece una buena sugerencia la tuya.
      Gracias.

      Eliminar
  2. necesito una idea como hacer que pronuncie el numero ingresado.
    como ago gravo los numeros haber quien me sugiere alguna otra idea

    ResponderEliminar
    Respuestas
    1. Mira, es muy probable que te sirva éste programa. Está escrito en C, pero estoy seguro que puedes adecuarlo a java muy fácilmente. Saludos.

      Eliminar
  3. Yo hice un programa igual y cada vez que pongo un número me dice por ejemplo "El numero ingresado es mayor" infinitas veces.

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...