Esercizio 14 – Erogazione del resto
- Gennaio 27, 2010
- by
- Donatantonio
Scrivere un programma che calcoli il resto in monete (2 euro, 1 euro, 50/100, 20/100,
10/100, 5/100, 2/100, 1/100) della somma corrisposta dal cliente. L’input sarà costituito da due importi: il prezzo da pagare e la somma corrisposta dal cliente.
Realizzare la classe Cashier per la gestione dei diversi tagli di moneta e una classe Resto che implementi l’erogazione del resto.
La classe Cashier.java
public class Cashier { double resto; // Metodo Costruttore vuoto public Cashier() { } // Metodo che restituisce una moneta da 2 Euro public double dai2Euro() { return 2; } // Metodo che restituisce una moneta da 1 Euro public double dai1Euro() { return 1; } // Metodo che restituisce una moneta da 50 centesimi public double dai50Cent() { return 0.50; } // Metodo che restituisce una moneta da 20 centesimi public double dai20Cent() { return 0.20; } // Metodo che restituisce una moneta da 10 centesimi public double dai10Cent() { return 0.10; } // Metodo che restituisce una moneta da 5 centeimi public double dai5Cent() { return 0.05; } // Metodo che restituisce una moneta da 2 centesimi public double dai2Cent() { return 0.02; } // Metodo che restituisce una moneta da 1 centesimo public double dai1Cent() { return 0.01; } }
La classe Resto.java:
import java.util.Scanner; public class Resto { public static void main(String[] args) { Scanner in = new Scanner(System.in); // Prendo in input la somma da pagare System.out.println("Dammi il prezzo : "); double p = in.nextDouble(); // Prendo in input la somma emessa per il pagamento System.out.println("Dammi la somma di denaro"); double s = in.nextDouble(); // Creo un nuovo oggetto Cashier per gestire il resto Cashier a = new Cashier(); System.out.println("Ecco il resto in monete: "); // Verifico che la somma emessa sia >= del prezzo del prodotto if (s >= p) { // Calcolo il resto double r = s - p; double re = 0 ; // Emetto se necessario moneta da 2 Euro while (r >= 2) { System.out.println(a.dai2Euro()); r = r - a.dai2Euro(); re = re + a.dai2Euro(); } // Emetto se necessario moneta da 1 Euro while (r >= 1) { System.out.println(a.dai1Euro()); r = r - a.dai1Euro(); re = re + a.dai1Euro(); } // Emetto se necessario moneta da 50 centesimi while (r >= 0.50) { System.out.println(a.dai50Cent()); r = r - a.dai50Cent(); re = re + a.dai50Cent(); } // Emetto se necessario moneta da 20 centesimi while (r >= 0.20) { System.out.println(a.dai20Cent()); r = r - a.dai20Cent(); re = re + a.dai20Cent(); } // Emetto se necessario moneta da 10 centesimi while (r >= 0.10) { System.out.println(a.dai10Cent()); r = r - a.dai10Cent(); re = re + a.dai10Cent(); } // Emetto se necessario moneta da 5 centesimi while (r >= 0.05) { System.out.println(a.dai5Cent()); r = r - a.dai5Cent(); re = re + a.dai5Cent(); } // Emetto se necessario moneta da 2 centesimi while (r >= 0.02) { System.out.println(a.dai2Cent()); r = r - a.dai2Cent(); re = re + a.dai2Cent(); } // Emetto se necessario moneta da 1 centesimo while (r >= 0.01) { System.out.println(a.dai1Cent()); r = r - a.dai1Cent(); re = re + a.dai1Cent(); } // Stampo a video il resto System.out.print("Per un totale di : "); System.out.println(" Euro " + re); } } }