Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Luis Fdo Carvajal en 14 de Mayo 2017, 17:34

Título: Java generar un número aleatorio en un rango definido por usuario BlueJ CU00908C
Publicado por: Luis Fdo Carvajal en 14 de Mayo 2017, 17:34
Buenos días, ejercicio CU00908C del tutorial de programación avanzada con Java.
Por favor para su revisión. Aunque recuerdo que nos solicitan crear clases y métodos distintos al main para dar solución a los ejercicios, esta es una manera diferente de resolverlo.
Gracias

Código: [Seleccionar]
package random_1;

import java.util.Random;
import java.util.Scanner;
/**
 *
 * @author ITCO1724
 */
public class Random_1 {

    /**
     * @param args the command line arguments
     */
public static void main(String[] args) {
       //Creación de un objeto Scanner
    Scanner sc = new Scanner(System.in);
         
    int numInicial, numFinal,numIntentos;
    int contadorAciertos = 0;
    int contadorFallos = 0;
    String[] solucion = new String[3];
    String seguir="s";
   
while (seguir.equalsIgnoreCase("s")) {
           
            System.out.println ("¿Quieres adivinar el numero? (s/n)");           
            seguir = sc.nextLine();
    if (seguir.equalsIgnoreCase("s")) {
   
   
   
   
    System.out.print("Introduce el numero inicial: ");
    numInicial = sc.nextInt();
    System.out.print("Introduce el numero final: ");
    numFinal = sc.nextInt();     
    int rango = (numFinal- numInicial) ;
    System.out.println("El rango del arreglo es de :" + rango);
    System.out.print("Introduce el numero de intentos : ");
    numIntentos = sc.nextInt();
    System.out.println("El numero de intentos :" + numIntentos);
       
    Random rnd = new Random();
       
       
    for(int i = 1; i<=numIntentos; i++){      //Generar 2 numeros enteros entre 40 y 60 ambos incluidos
           
     int numeroAleatorio;
                       
        numeroAleatorio = (int) (rnd.nextDouble() * rango + numInicial);

// Imprimir numeros aleatorios
        System.out.println( "El #aleatorio :" + numeroAleatorio);
        System.out.print("QUE NUMERO ESTOY PENSANDO? : ");   
        int tmpPensando =sc.nextInt();
        solucion[i] = Integer.toString(numeroAleatorio);    //Pasar a string la variable int tmpPensando
        System.out.println("El numero que estoy pensando :" + numeroAleatorio);
       
           if (tmpPensando >= 0 && tmpPensando != numeroAleatorio){
             System.out.println(" No has acertado!! :");
             contadorFallos = contadorFallos+1;}
           else  {
             System.out.println(" Has acertado!! :");
             contadorAciertos = contadorAciertos+1;}       

             if(tmpPensando >=0 && numeroAleatorio >= 0 ){         
                System.out.println("Has acertado   "  + contadorAciertos + "veces y has fallado   "+ contadorFallos + "veces. Eran solución:" + solucion[i]);}
                else {System.out.println ("Los valores no son válidos");}
            } 
        System.out.println ("¡Hasta la próxima!");break;}
        }
    } 
}
   
Título: Re:Java generar un número aleatorio en un rango definido por usuario BlueJ CU00908C
Publicado por: Alex Rodríguez en 18 de Junio 2017, 19:28
Hola Luis Fdo Carvajal

El ejercicio no cumple con la ejecución que pedía el enunciado

Por otro lado, en algunos casos se ejecuta correctamente pero en otros casos me salta un error java.lang.ArrayIndexOutOfBoundsException en la línea solucion = Integer.toString(numeroAleatorio);    //Pasar a string la variable int tmpPensando

Deberías revisarlo

Saludos