Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Antoniio en 28 Enero 2016, 07:25 am



Título: El numero sobre pasa el rango menor solicitado
Publicado por: Antoniio en 28 Enero 2016, 07:25 am
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:

(http://i.imgur.com/s3YzfXA.png)

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"!


Título: Re: El numero sobre pasa el rango menor solicitado
Publicado por: ivancea96 en 28 Enero 2016, 10:44 am
Generas un número incorrectamente.
Código
  1. int num_escondido = min + gen.nextInt(max-min+1);


Título: Re: El numero sobre pasa el rango menor solicitado
Publicado por: Antoniio en 28 Enero 2016, 16:10 pm
Oh, ya veo, si, debe ser fijo  :silbar:

Gracias! ;D