public final class EuroMillon {
static double P1; //Valor de las ESTRELLAS
static double P2; //Valor de los NUMEROS
public static void main(String[] args) {
/*
* Comenzamos recogiendo los valores de pago de P1 y P2.
* Estos nos llegan como argumentos por la linea de comandos, es decir,
* están en el array de String args que recibe este método main().
* Estos valores nos llegan en String y hay que parsearlos a double.
* Este proceso puede fallar si el usuario ha errado al elegir entre coma y punto
* o bien ha puesto letras mezcladas con numeros, lo cuál produciría una excepción
* al parsear los datos.
* Usamos TRY CATCH para controlar esta posibilidad, además de comprobar primero
* si hemos recibido realmente algún parámetro o no.
*/
if (args.length < 2) //Argumentos insuficientes. No podemos poner en marcha el programa
{
System.out.println("ERROR.\nEl programa requiere de dos argumentos: el valor que se paga por cada estrella(P1)"
+ " y el valor que se paga por cada numero(P2).");
}
else//Argumentos suficientes. A ver si podemos parsearlos a double. Si no es posible, el programa tampoco se pondrá en marcha
{
if (parseaArgumentos(args)) //Solo si esto es true, podremos continuar con el programa.
{
mensajeBienvenida(); //Para que el main() no sea demasiado extenso, prefiero delegar ciertas cosas en metodos separados
}
}
System.out.println("\n\tGracias por usar nuestro programa. Hasta la proxima.");
}
/**
* Intentará parsear a double los argumentos recibidos y los guardará en las
* variables globales P1 y P2. Si no lo consigue, informará en pantalla y devolverá
* false para que el main() sepa que no tiene datos con los que poder seguir trabajando.
* @param args Array de argumentos con los valores obtenidos desde linea de comandos.
* @return True o False según si pudo parsear o no los datos.
*/
static boolean parseaArgumentos(String[] args)
{
try {
P1 = Double.parseDouble(args[0]);
P2 = Double.parseDouble(args[1]);
return true; //El parseo ha tenido exito
} catch (NumberFormatException e) {
System.out.println("ERROR.\nEL formato de los argumentos no es valido.\nUse solo numeros naturales"
+ " y revise el uso del punto o coma decimal.");
return false;
}
}
/**
* Simplemente da la bienvenida inicial una vez hemos recuperado correctamente
* los argumentos recibidos
*/
static void mensajeBienvenida()
{
System.out.println("\tBienvenido a su Euromillon online.\n");
System.out.printf("Hoy el NUMERO acertado se paga a %.2f euros.\n", P2);
System.out.printf("Y la ESTRELLA acertada se paga a %.2f euros.\n", P1);
}
}