/**************************************************************************************
***************************************************************************************
				Übungsblatt 7, Aufgabe 1
		Gruppe: Madlen Frieseke, Carsten Kötter, Erik Streb
***************************************************************************************
**************************************************************************************/

public class Euro{
	int[] zurueck = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
	double[] euro = {1000,500,200,100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01}; //euro-stückelung
        double a,b;
	
	public int[] Wechsel (double bet, double geg){
		if (geg<bet) System.out.println ("Mehr Geld her, sonst gibt's was!");
		else {
			geg -= bet-0.001; //komischer Fehler in Java???
			for (int i=0;i<euro.length;i++){
			while (geg>=euro[i]){ 
					zurueck[i]++;
					geg -= euro[i];	
				}
			}
		}
		return zurueck;
	}
			
	public static void main (String[] args){
		Euro geld = new Euro();
		
		if (args.length==2){
        		try{
        			// versuchte Umwandlung von String in double-Wert
				//   ueber den Umweg Konstruktor von Wrapperklasse "Double"
				Double d_obj = new Double(args[0]);

				// im Fehlerfall wird autom. ein Objekt der Klasse
				//   NumberFormatException erzeugt und diese Anweisung
				//   nicht mehr ausgefuehrt -> Sprung in den catch-Block
				geld.a = d_obj.doubleValue();
			}
			// wird nur im passenden Fehlerfall ausgefuehrt
			catch (NumberFormatException exc){
				System.out.println("Fehler! Umwandlung des Strings \""+ args[0] + "\" fuer zu zahlenden Preis gescheitert!\nGeben Sie z.B. eine solche Zahl ein: 5.95");
	
				// Default-Wert setzen
				geld.a=-1;
			}
	
        		try{
        			// versuchte Umwandlung von String in double-Wert
				//   ueber den Umweg Konstruktor von Wrapperklasse "Double"
				Double d_obj = new Double(args[1]);
	
				// im Fehlerfall wird autom. ein Objekt der Klasse
				//   NumberFormatException erzeugt und diese Anweisung
				//   nicht mehr ausgefuehrt -> Sprung in den catch-Block
				geld.b = d_obj.doubleValue();
			}
			// wird nur im passenden Fehlerfall ausgefuehrt
			catch (NumberFormatException exc){
				System.out.println("Fehler! Umwandlung des Strings \""+ args[1] + "\" fuer gegebenes Geld gescheitert!\nGeben Sie z.B. eine solche Zahl ein: 5.95");

				// Default-Wert setzen
				geld.b=-1;
			}

			if (geld.a>=0 & geld.b>=0){
				System.out.println ("Zu Zahlen: "+geld.a+" Euro.\nGegeben: "+geld.b+" Euro."); 

				int[] rueckgeld = geld.Wechsel(geld.a,geld.b);

				if (geld.a < geld.b) System.out.println("\nSie erhalten "+(geld.b - geld.a)+" Euro Rueckgeld in folgender Stueckelung: ");
				else if (geld.a == geld.b) System.out.println("\nSie haben passend gegeben. Sie bekommen nichts zurueck.");


				for (int i=0; i<rueckgeld.length;i++) if(rueckgeld[i]>0) System.out.println("\t"+rueckgeld[i]+" mal " +geld.euro[i]+" Euro.");
			}
		}
		else System.out.println("Sie muessen schon den Preis des Produkts und das gegebene Geld angeben!!!\nUnd zwar so z.B.: Euro 5.90 10.0");
	}
}
