Buenas, no estoy seguro de que este sea el lugar mas adecuado para realizar esta pregunta, pero supongo que muchos podréis ayudarme. El caso es que estoy aprendiendo programación Java en el grado superior de DAM y mi práctica final de esta evaluación consiste en hacer un programa que entre otras cosas convierta un nº determinado de euros a billetes y monedas de manera óptima (es decir, que 200 euros no te los haga con 10 billetes de 20).
La práctica la tengo acabada, pero el método que he echo para realizar la conversión de euros me ha quedado muy extenso y no encuentro ninguna manera de acortarlo. Me gustaría saber si me podríais dar algún consejo que me pueda ayudar. Este es el código que se me ocurrió, gracias de antemano:
Introduciendo un double cantidad:
{
int cant, euros;
System.out.println(cantidad+ " euros son:");
//Transformo los euros a números enteros para que me sea mas fácil trabajar con ellos
cantidad=cantidad*100;
euros = (int) cantidad;
//Uso un if diferente para cada conversión
if(euros>=50000)
{
cant=euros/50000;
euros=euros%50000;
System.out.println(cant+ " billete/s de 500€.");
}
if(euros>=20000)
{
cant=euros/20000;
euros=euros%20000;
System.out.println(cant+ " billete/s de 200€.");
}
if(euros>=10000)
{
cant=euros/10000;
euros=euros%10000;
System.out.println(cant+ " billete/s de 100€.");
}
if(euros>=5000)
{
cant=euros/5000;
euros=euros%5000;
System.out.println(cant+ " billete/s de 50€.");
}
if(euros>=2000)
{
cant=euros/2000;
euros=euros%2000;
System.out.println(cant+ " billete/s de 20€.");
}
if(euros>=1000)
{
cant=euros/1000;
euros=euros%1000;
System.out.println(cant+ " billete/s de 10€.");
}
if(euros>=500)
{
cant=euros/500;
euros=euros%500;
System.out.println(cant+ " billete/s de 5€.");
}
if(euros>=200)
{
cant=euros/200;
euros=euros%200;
System.out.println(cant+ " moneda/s de 2€.");
}
if(euros>=100)
{
cant=euros/100;
euros=euros%100;
System.out.println(cant+ " moneda/s de 1€.");
}
if(euros>=50)
{
cant=euros/50;
euros=euros%50;
System.out.println(cant+ " moneda/s de 50cents.");
}
if(euros>=20)
{
cant=euros/20;
euros=euros%20;
System.out.println(cant+ " moneda/s de 20cents.");
}
if(euros>=10)
{
cant=euros/10;
euros=euros%10;
System.out.println(cant+ " moneda/s de 10cents.");
}
if(euros>=5)
{
cant=euros/5;
euros=euros%5;
System.out.println(cant+ " moneda/s de 5cents.");
}
if(euros>=2)
{
cant=euros/2;
euros=euros%2;
System.out.println(cant+ " moneda/s de 2cents.");
}
if(euros>=1)
{
cant=euros/1;
euros=euros%1;
System.out.println(cant+ " moneda/s de 1cents.");
}
}
Como veis me ha quedado muy extenso, el caso es que funciona, pero me gustaría mejorarlo.
Un saludo!