Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 15 de Diciembre 2016, 13:22
-
Buenas.
Aquí dejo una posible solución al ejercicio CU00908C del curso de programación avanzada en Java.
Clase Test
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
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
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
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
-
Buenas, lo he probado "del derecho y del revés" y funciona a la perfección, se ve muy buen código.
Salu2