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
gracias ^^
ResponderEliminar¡Hola, Anónimo! Gracias a ti por el comentario.
Eliminarsip, pero como podría hacer por ejemplo
ResponderEliminarque se vaya acercando y me diga "muy caliente" ??? o muy frio?
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
Eliminarif ( 10 <= numero - recibido)
System.out.println("\nMuy caliente\");
etc.
Me parece una buena sugerencia la tuya.
Gracias.
necesito una idea como hacer que pronuncie el numero ingresado.
ResponderEliminarcomo ago gravo los numeros haber quien me sugiere alguna otra idea
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.
EliminarYo hice un programa igual y cada vez que pongo un número me dice por ejemplo "El numero ingresado es mayor" infinitas veces.
ResponderEliminar