Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] El numero sobre pasa el rango menor solicitado

Estas en el tema de El numero sobre pasa el rango menor solicitado en el foro de Java en Foros del Web. Hola, buenas. Estoy trabajando con un juego que nos encargaron hacer en java pero me surgió un problema que no puedo resolver. El juego se ...
  #1 (permalink)  
Antiguo 27/01/2016, 23:56
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años, 6 meses
Puntos: 0
El numero sobre pasa el rango menor solicitado

Hola, buenas. Estoy trabajando con un juego que nos encargaron hacer en java pero me surgió un problema que no puedo resolver. El juego se trata de adivinar un número aleatorio dado por la computadora, donde el usuario pone el límite desde el número más pequeño que puede ser hasta el más alto. Todo parecía bien hasta que me solicité como límite menor el número "10" y como el máximo al "35", comencé a ingresar números tratando de adivinar pero al parecer el aleatorio fue uno menor al 10, a pesar de que el límite era 10, cuando llego al 9 ya no me deja seguir, pero se supone que no debió aparecer uno menor a 10, por qué puede ser ese problema?, dejo una imagen para ilustrar mejor el problema:



Y este es el código:
Código:
import java.util.Scanner;
import java.util.Random;

public class Principal {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int max, min;
		System.out.println("Ingrese el valor minimo: ");
		min = sc.nextInt();
		System.out.println("Ingrese el valor maximo: ");
		max = sc.nextInt();
		
		//genera un numero aleatorio entre el valor maximo y el minimo
		Random gen = new Random();
		int num_escondido = gen.nextInt(min) + gen.nextInt(max);
		
		//aqui comienza a adivinar
		int num_elegido = 0;
		System.out.println("Encuentra el numero entre el " + min + " y el " + max);
		for(int intentos=1; num_elegido != num_escondido; intentos++){
			
			//Recibe el numero propuesto por el usuario
			System.out.println("Ingrese el numero: ");
			num_elegido = sc.nextInt();
			
			//Comprueba los valores, si se pasa del rango o si es mas chico del rango, asi como una guia para el usuario.
			if (num_elegido > max){
				System.out.println(num_elegido + " no se encuentra entre los valores elegidos como limites..");
			}else if (num_elegido < min){
				System.out.println(num_elegido + " no se encuentra entre los valores elegidos como limites..");
			} else if (num_elegido < num_escondido){
				System.out.println(num_elegido + " es demasiado chico, ingrese uno mas alto: ");
			} else if (num_elegido > num_escondido){
				System.out.println(num_elegido + " es demasiado alto, ingrese uno mas chico: ");
			}else {
				System.out.println("FELICIDADES !!, haz adivinado el numero ( " + num_escondido + " ) " + "en " + intentos + " intentos :D ");
			}
		}
		
		
	}

}
Gracias de antemano!
  #2 (permalink)  
Antiguo 28/01/2016, 02:20
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: El numero sobre pasa el rango menor solicitado

Buenas,

Lo que pasa es que lo estas calculando mal. El minimo es fijo, pero tu lo estas calculando como un aleatorio.

Deberia quedar asi:

Código Java:
Ver original
  1. int num_escondido = min + gen.nextInt((max-min));

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 28/01/2016, 09:12
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: El numero sobre pasa el rango menor solicitado

Vaya forma de equivocarme :v

Ya entiendo, entonces queda solucionado, gracias ! :3

Etiquetas: menor, numero, rango
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:20.