Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: hymsoft en 22 de Julio 2016, 17:34

Título: Crear números aleatorios en Java dentro de un rango o intervalo extremo CU00672B
Publicado por: hymsoft en 22 de Julio 2016, 17:34
Buen dia!!

Este es mi código para la generación de números aleatorios ejercicio CU00672B del curso básico de programación en lenguaje Java.

Código: [Seleccionar]
/**
 * Clase para manipular la entrada por teclado
 *
 * @author Hugo Segura con correcciones de aprenderaprogramar.com
 */

import java.util.Scanner;

public class EntradaPorTeclado
{
   public EntradaPorTeclado(){}//constructor por defecto
   
   /* Este metodo retorna un String como reultado de lo ingresado
    * por el usuario mediante el teclado
    * El parametro es un String para mostrar un mensaje
    */
   public String pedirEntrada(String mensaje_a_mostrar){
       String entradaTeclado = "";
       
       System.out.print(mensaje_a_mostrar);
       Scanner entradaScanner = new Scanner(System.in);
       entradaTeclado = entradaScanner.nextLine();
       return entradaTeclado;
    }//cierre entradaTeclado
}//Cierre clase

Código: [Seleccionar]
/**
 * Clase AdivinaElNumero para la resolucion del ejercicio CU00672B
 *
 * @author Hugo Segura
 * @version (a version number or a date)
 */
import java.util.Random;

public class AdivinaElNumero
{
    public static void main(String[] args){
        int suNumero = -1;//Guarda el numero ingresado por el usuario
       
        System.out.print("Juguemos a adivinar un número...\n\n");
        //genero el numero aleatorio entre 1-100
        Random aleatorio = new Random();//objeto para generar el numero Pseudoaleatorio
        int miNumero = aleatorio.nextInt(100);
        System.out.println(miNumero);// para "saber" cual es miNumero mientras pruebo el programa
        System.out.println("Se a generado un numero aleatorio entero entre 1 y 100. Intente Adivinarlo");
        do {
            EntradaPorTeclado suEntrada = new EntradaPorTeclado();//objeto para solicitar el ingreso por teclado
            /*Aunque se que esta mal, voy a suponer que el usuario ingresa un numero, entonces no voy a hacer
             * este control y guardo en la variable suNumero, el String devuelto por la clase EntradaPorTeclado,
             * convertido en un entero.
            */
            suNumero = Integer.parseInt(suEntrada.pedirEntrada("Ingrese un numero entre 1 y 100: "));
            if (suNumero < miNumero){
                System.out.println("No has acertado: el número es mayor");
            }
           
            if(suNumero > miNumero){
                System.out.println("No has acertado: el numero es menor");
            }
               
        }while (suNumero != miNumero);
        //si salio del do-while es porque miNumero y suNumero son iguales
        System.out.println("Has acerteado. Gracias por jugar...");
       
       
    }//cierre del main
}//cierre de la clase
Título: Re:Crear números aleatorios en Java dentro de un rango o intervalo extremo CU00672B
Publicado por: Alex Rodríguez en 01 de Agosto 2016, 21:42
Hola hymsoft, el ejercicio está bien resuelto con un único problema: el número que generas no está entre 1 y 100, sino entre 0 Y 99

int miNumero = aleatorio.nextInt(100);

Según el api de java

public int nextInt(int bound)

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)

Es decir, el número está entre 0 incluido y el valor indicado excluido. Tendrías que corregir el intervalo para que fuera correcto.

Saludos