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: paramonso 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.
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
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 ;)
-
Buenas, para quien revise este ejercicio, lo he revisado y lo veo perfecto: realiza lo pedido y funciona correctamente. Salu2