21
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Numeros Aleatorios en Java. Clase Random programa simulación generador CU00908C
« en: 02 de Diciembre 2018, 14:13 »
Hola dejo el ejercicio CU00908C del taller de programación Java avanzado de aprenderaprogramar. Generación de números aleatorios en Java. Rangos. Clase Random.
Codigo de la clase AdivinarNumero
Gracias
Citar
EJERCICIO
Crea un programa que cumpla lo indicado a continuación. El programa permitirá jugar a “adivinar un número entero” tantas veces como el usuario desee. En cada ocasión el programa pedirá al usuario el número inicial y el número final de la serie de números entre los que se encontrará el número a adivinar. También preguntará el número de intentos permitidos. En cada intento el número a adivinar será diferente y estará dentro del rango definido por el usuario.
Trás los intentos el programa nos dirá cuantas veces hemos acertado y cuántas veces hemos fallado, los números que eran solución y nos preguntará si queremos volver a jugar.
Ejemplo de ejecución:
Introduce el numero inicial del rango: 40
Introduce el numero final del rango: 60
Introduce el numero de intentos: 2
¿Qué numero estoy pensando? : 44
No has acertado
¿Qué numero estoy pensando? : 42
No has acertado
Has acertado 0 veces y has fallado 2 veces. Eran solución: 49, 41
Quieres probar otra vez ? (S/N): S
Introduce el numero inicial del rango: 4
Introduce el numero final del rango: 6
Introduce el numero de intentos: 2
¿Qué numero estoy pensando? : 4
No has acertado
¿Qué numero estoy pensando? : 5
Has acertado!!
Has acertado 1 veces y has fallado 1 veces. Eran solución: 6, 5
Quieres probar otra vez ? (S/N): N
Adiós
Codigo de la clase AdivinarNumero
Código: [Seleccionar]
import java.util.Scanner;
import java.util.Random;
/**
* Write a description of class AdivinarNumero here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class AdivinarNumero
{
public static String entradaUsuario="";
public static Scanner entrada=new Scanner(System.in);
public static void main(String arg[ ]) {
String separador = new String(new char[63]).replace("\0", "*");
boolean fin=true;
int numeroInicio=0,numeroFin=0,numeroIntentos=0, numeroUsuario=0;
Random rnd = new Random();
do{
int aciertos=0,fallos=0;
String solucion="",introducidos="";
System.out.print("\t\t\t"+separador+
"\n\t\t\t*** Ejercicio CU00908C Java avanzado aprenderaprogramar.com ***\n"+
"\t\t\t***\t\t JUEGO ADIVINAR UN NUMERO \t\t ***\n"+
"\t\t\t*** Debe de introducir el numero inicial, el numero final ***\n"+
"\t\t\t*** y el numero a adivinar ***\n"+
"\t\t\t"+separador+"\n\n");
System.out.print("\t\t\t\tIntroduzca numero inicial del rango: ");
numeroInicio=Integer.parseInt(validarNumero());
System.out.print("\t\t\t\tIntroduzca numero final del rango: ");
numeroFin=Integer.parseInt(validarNumero());
System.out.print("\t\t\t\tIntroduzca el numero de intentos: ");
numeroIntentos=Integer.parseInt(validarNumero());
System.out.print("\n\t\t\t\tEL NUMERO A ADIVINAR ESTA ENTRE "+numeroInicio+" Y "+(numeroInicio+numeroFin-1)+"\n");
int i=1;
while(i<=numeroIntentos){
int numeroAleatorio=(int)(rnd.nextDouble() * numeroFin+numeroInicio );
System.out.print("\t\tIntento numero: "+i+" ¿Que numero piensa usted que es?: ");
numeroUsuario=Integer.parseInt(validarNumero());
solucion=solucion+numeroAleatorio+",";
introducidos=introducidos+numeroUsuario+",";
if(numeroUsuario!=numeroAleatorio){
System.out.print("\t\t No!!!!! Ha fallado\n");
fallos=fallos+1;
}
else{
System.out.print("\t\tSi!!!!! Ha acertado\n");
aciertos=aciertos+1;}
i++;
}
System.out.print("\n\t\t Ha acertado "+aciertos+" veces\n"+
"\t\t Ha fallado "+fallos+" veces.\n\n"+
"\t\t Los numeros introducidos son "+introducidos+
"\n\t\t Los numeros a adivinar eran "+solucion);
System.out.print("\n\n\t\t¡¡ PULSE INTRO PARA CONTINUAR !!\n\n\t\tCualquier otra + intro FINALIZAR\n\n");
entradaUsuario=entrada.nextLine();
System.out.print('\u000C');
fin=entradaUsuario.equals("");
}while(fin);
System.out.print("\n\n\n\n\n\t\t\t"+separador+"\n"+"\t\t\t"+separador+"\n\t\t\t\t\t\tADIOS"+"\n\t\t\t"+separador+"\n"+"\t\t\t"+separador+"\n");
}//Fin main
//Bucle para validar que solo se escriban numeros por teclado
public static String validarNumero(){
int num=0;
boolean ok=false;
do{
entradaUsuario= entrada.nextLine();
//Comprobar que sea un numero entero
if (isNumeric(entradaUsuario) == true) {
ok=true;
}
else{
System.out.print("Solo se admiten numeros\n");
entradaUsuario="";
}
} while (!ok);
return entradaUsuario;
}
public static boolean isNumeric(String str) {//Validacion numeros
return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
}
}
Gracias
![Gui�ar ;)](https://aprenderaprogramar.com/foros/Smileys/default/wink.gif)