Autor Tema: Java. Números aleatorios: cómo crearlos en un rango. Clase Random. CU00908C#  (Leído 2884 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Buenas.

Aquí dejo una posible solución al ejercicio CU00908C del curso de programación avanzada en Java.

Clase Test
Código: [Seleccionar]
public class TestAdivnaElNumeroOculto {
public static void main(String[] args) {
GeneradorDeNumerosAleatorios generador = new GeneradorDeNumerosAleatorios();
EntradaDeTeclado entrada = new EntradaDeTeclado();
Marcador marcador;
int numPropuesto, numIntentos;
char otraVez = 'n';
String msgResultado;
do {
System.out.print("Introduce el número inicial del rango: ");
generador.setLimiteRango1(entrada.getInt());
System.out.print("Introduce el número final del rango: ");
generador.setLimiteRango2(entrada.getInt());
System.out.print("Introduce el número de intentos: ");
numIntentos = entrada.getInt();
int[] numEscondidos = new int[numIntentos];
marcador = new Marcador();
for(int i = 0; i < numIntentos; i++) {
numEscondidos[i] = generador.getNumeroAleatorio();
System.out.print("¿Qué número estoy pensando?: ");
numPropuesto = entrada.getInt();
if(numEscondidos[i] == numPropuesto) {
marcador.addAcierto();
System.out.println("Has acertado!!");
} else {
marcador.addError();
System.out.println("No has acertado!!");
}
}
msgResultado = "Has acertado " + marcador.getAciertos() + " veces y has fallado " +
marcador.getErrores() + " veces. Eran solución: " + numEscondidos[0];
if(numEscondidos.length > 1) {
for(int i = 1; i < numEscondidos.length; i++) {
msgResultado += ", " + numEscondidos[i];

}
}
System.out.println(msgResultado + ".");
System.out.print("¿Quieres probar otra vez? (S/N)");
otraVez = entrada.getChar();

} while(otraVez == 's' || otraVez == 'S');
System.out.println("Adiós");
}
}

Clase EntradaDeTeclado
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado {
    Scanner entradaDeTeclado;
    public EntradaDeTeclado ()  {
        entradaDeTeclado = new Scanner(System.in);
    }
 
    public String getString () {
    return entradaDeTeclado.nextLine();
    }
   
    public int getInt() {
    return Integer.parseInt(entradaDeTeclado.nextLine());
    }
   
    public double getDouble() {
    return Double.parseDouble(entradaDeTeclado.nextLine());
    }
   
    public char getChar() {
    String entrada = entradaDeTeclado.nextLine();
    if(entrada.equals("")){
    return ' ';
    } else {
    return entrada.charAt(0);
    }
    }

}

Clase Marcador
Código: [Seleccionar]
public class Marcador {

private int aciertos;
private int errores;
private int numPartidas;

public Marcador() {
aciertos = 0;
errores = 0;
numPartidas = 0;
}

public void setAciertos(int aciertos) {
this.aciertos = aciertos;
}

public void setErrores(int errores) {
this.errores = errores;
}

public void setNumPartidas(int numPartidas) {
this.numPartidas = numPartidas;
}

public int getAciertos() {
return aciertos;
}

public int getErrores() {
return errores;
}

public int getPartidas() {
return numPartidas;
}

public void addAcierto() {
aciertos++;
}

public void addError() {
errores++;
}

public void addPartida() {
numPartidas++;
}
}

Clase GeneradorDeNumerosAleatorios
Código: [Seleccionar]
import java.util.Random;

public class GeneradorDeNumerosAleatorios {
private Random rnd;
private int limiteRango1;
private int limiteRango2;

public GeneradorDeNumerosAleatorios() {
rnd = new Random();
this.limiteRango1 = 0;
this.limiteRango2 = 0;
}

public GeneradorDeNumerosAleatorios(int limiteRango1) {
rnd = new Random();
this.limiteRango1 = limiteRango1;
this.limiteRango2 = 0;
}

public GeneradorDeNumerosAleatorios(int limiteRango1, int limiteRango2) {
rnd = new Random();
this.limiteRango1 = limiteRango1;
this.limiteRango2 = limiteRango2;
}

public void setLimiteRango1(int limiteRango1) {
this.limiteRango1 = limiteRango1;
}

public void setLimiteRango2(int limiteRango2) {
this.limiteRango2 = limiteRango2;
}

public int getLimiteRango1() {
return limiteRango1;
}

public int getLimiteRango2() {
return limiteRango2;
}

public int getNumeroAleatorio() {
if(limiteRango1 < limiteRango2) {
return rnd.nextInt(limiteRango2 - limiteRango1 + 1) + limiteRango1;
} else {
return rnd.nextInt(limiteRango1 - limiteRango2 + 1) + limiteRango2;
}
}
}

Saludos. ;D
« Última modificación: 25 de Diciembre 2016, 20:58 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas, lo he probado "del derecho y del revés" y funciona a la perfección, se ve muy buen código.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".