# Geldstückelung



## theGoodGuy (1. Nov 2009)

Hey

Ok ich will ein programm schreiben welches die optimale Stückelung von Banknoten berechnet. Also das programm soll fragen wie viel Geld ich haben möchte und mir dann ausgeben wie dies am besten Gestückelt werden kann.(minimale Anzahl an Banknoten) 
Die möglichen Beträge wäre 500,200,100,50,20,10,5,2,1 . Der einzugebene Betrag soll immmer dezimal und ohne Kommastellen sein. 
Nun versuche ich das alles in ein kleines Java Programm umzuwandeln. Nur leider habe ich absulut keine Ahnung wie ich den Algorithmus in Java implementiere.


```
import java.util.Scanner;

public class Geldscheine {
  public static void main(String[] args) {
  System.out.println("Den zu stueckelnden Betrag bitte eingeben");
  java.util.Scanner scanner = new java.util.Scanner(System.in);
  
int betrag = scanner.nextInt();
  

double geldschein = 1;
       
   
}
```

soweit bin ich bis jetzt. Und das is ja eigentlich nichts. Aber ich tue mich extrem schwer diesen Algorithmus halt zu implemantieren. Kann mir da bitte jemand Helfen und mir bei der Lösung dieses Problems helfen?


----------



## faetzminator (1. Nov 2009)

Willst du nur die Anzahl der Noten und Münzen haben oder jeweils auch noch die Anzahl pro Wert?


----------



## theGoodGuy (1. Nov 2009)

Die Anzahl pro Wert.

Also wäre schön wenn in der Ausgabe dann steht welche Anzahl verwendet wurde. Scheine/Münzen die nicht gebraucht wurden brauchen nicht mit aufgelistet werden.(zB:0*500+1*200) 

Bsp:  Der Betrag 450:

450 = 2*200  +  1*50

aber das ist ja denke net so das problem bei mir gerade ^^  
Die Ausgabe über println (".....") dürfte denke ich mal net so schwer sein.


----------



## Final_Striker (1. Nov 2009)

du ziehst vom dem betrag so lange es geht (betrag > 0) immer wieder den höchsten schein, in deinem fall 500, ab.
danach gehst du zu dem nächst kleinerem schein über usw. bis der betrag = 0 ist.

tipp:

für die scheine ein array anlegen und diese dann mit hilfe einer for-schleife durchlaufen. in der for-schleife mit einer while-schleife die scheine so lange anziehen bis der betrag < 0 ist. 

damit müsstest du es schaffen. ;-)


----------



## faetzminator (1. Nov 2009)

Am einfachsten machst du ein Array mit den möglichen Beträgen, gehst mit einer for each Schleife durch und teilst den Betrag durch den aktuellen Betrag (500,200,...), mit Modulo kriegst du den Restbetrag. Wenn die Anzahl > 0 ist, gibst du den Betrag und die Anzahl aus. Du könntest die Mengen aber auch in einem Array speichern.


----------



## theGoodGuy (1. Nov 2009)

oha mit arrays habe ich bis jetzt noch net wirklich viel gemacht :>

das mit mod habe ich mir auch schon überlegt. 
Könnte vll jemand nen Bsp geben für die erste Überprüfung, zB für die 500 ?  Wäre echt sehr hilfreich.
Danke schonmal für eure schnellen Antworten.


----------



## Marco13 (1. Nov 2009)

Nimm noch Beschränkungen für die verfügbare Anzahl der jeweiligen Scheine dazu, dann wird's interessant


----------



## faetzminator (2. Nov 2009)

@Marco13: Dann sind wir bei der ersten aktuellen Aufgabe von SOI  The ATM | Swiss Olympiad in Informatics
@TO: Kann ich dir schon, aber dann hast du sowieso den gesamten Code  ich schreib ja nich den Code pro Betrag, sondern allgemein...


----------



## theGoodGuy (2. Nov 2009)

ich will ja auch net den ganzen Code, der nützt mir am Ende nicht wirklich viel, da ich das ganze ja auch verstehen will/muss. 
Wollte mal nen kleines Bsp oder nen guten Ansatz dafür haben. google gibt mir net wirklich viel her(vll suche ich auch nach dem falschen etc  )


----------



## faetzminator (2. Nov 2009)

Naja der gute Ansatz wär +-10 Zeilen lang und würde den ganzen Code beinhalten...
aber hier Pseudocode:

```
mache für alle Einträge im Array:
  berechne Vorkommnis mit / und speichere in lokaler Variable
  berechne Restbetrag mit % und speichere in Betrag
  wenn Vorkommnis (lokale Variable) > 0:
    gib Eintrag + Vorkommnis aus
```


----------



## Painii (2. Nov 2009)

theGoodGuy hat gesagt.:


> Bsp:  Der Betrag 450:
> 
> 450 = 2*200  +  1*50



Wie bist du denn darauf gekommen.
Wie würdest du bei einer viel viel größeren Zahl darauf kommen?
Also wenn ich dir die 154235612423 Euro sage, wie kommst du erstmal darauf wieviele 500er du dafür brauchst?

Den gleichen Ansatz kannst du immer wieder benutzen, bis du alles ausbezahlt hast.


----------



## Leroy42 (2. Nov 2009)

Im Prinzip:


```
int aktuellerTeilbetrag = 500;
int count = rest/aktuellerTeilbetrag;
System.out.println(count+"*"+aktzuellerTeilbetrag+"€");
rest -= count*aktuellerTeilbetrag;:
```

und dieses Fragment für alle anderen Geldscheine und -münzen.


----------



## theGoodGuy (2. Nov 2009)

[JAVA=42]
public class Programm24 {
    public static void main(String[] args) {
        java.util.Scanner q = new java.util.Scanner(System.in);
        System.out.println("Bitte Betrag zwischen 1 und 1000 eingeben: ");
        int x = q.nextInt(); // Betrag eingeben
        int y = x; // Zur Ausgabe eingegebenen Wert sichern
        int a = 0; // 500er
        int b = 0; // 200er
        int c = 0; // 100er
        int d = 0; // 50er
        int e = 0; // 20er
        int f = 0; // 10er
        int g = 0; // 5er
        int h = 0; // 2er
        int i = 0; // 1er
        a = (x / 500);
        x = (x - (a*500));
        b = (x / 200);
        x = (x - (b*200));
        c = (x / 100);
        x = (x - (c*100));
        d = (x / 50);
        x = (x - (d*50));
        e = (x / 20);
        x = (x - (e*20));
        f = (x / 10);
        x = (x - (f*10));
        g = (x / 5);
        x = (x - (g*5));
        h = (x / 2);
        x = (x - (h*2));
        i = (x / 1);
        System.out.println(y +" = " +a +" * 500 " +" + " +b +" * 200 " +" + "
                +c +" * 100 " +" + " +d +" * 50 " +" + " +e +" * 20 " +" + " +f
                +" * 10 " +" + " +g +" * 5 " +" + " +h +" * 2 " +" + " +i +" * 1 ");

    }
}[/code]

so habs nun bisschen anders gemacht ohne Schleife, sondern er geht jeden Wert einzeln durch. Vielleicht nich sonderlich effektiv aber seinen Zweck erfüllt es


----------



## theGoodGuy (2. Nov 2009)

```
System.out.println(y +" = " +a +" * 500 " +" + " +b +" * 200 " +" + "
                +c +" * 100 " +" + " +d +" * 50 " +" + " +e +" * 20 " +" + " +f
                +" * 10 " +" + " +g +" * 5 " +" + " +h +" * 2 " +" + " +i +" * 1 ");
```

Wie kann man das denn machen das er zB nur 1*500 + 1*20 anzeigt bei jetzt beispielsweise 520.

so zeigt er ja nun 1*500 + 0*200 + 0*100... etc
Würde es aber gerne so machen das er nur die anzeigt die auch benutzt werden.


----------



## Leroy42 (2. Nov 2009)

Schon richtig, aber die ganzen Variablen *a*-*i* einzuführen,
also für jeden Schein/Münz-betrag eine neue Variable einzuführen, finde ich etwas unsinng.))


----------



## Leroy42 (2. Nov 2009)

theGoodGuy hat gesagt.:


> Würde es aber gerne so machen das er nur die anzeigt die auch benutzt werden.



Wenn eine Division 0 ergibt, einfach für diesen Schein/diese Münze nichts ausgeben.


----------



## ARadauer (2. Nov 2009)

> Vielleicht nich sonderlich effektiv aber seinen Zweck erfüllt es


Seinen Zweck erfüllen ist aber oft trotzdem Müll!


----------



## theGoodGuy (2. Nov 2009)

und wie macht man das?

in der println Zeile/Ausgabe  oder direkt hinter jeder Funktion


----------



## ARadauer (2. Nov 2009)

theGoodGuy hat gesagt.:


> und wie macht man das?
> 
> in der println Zeile/Ausgabe  oder direkt hinter jeder Funktion



ja so wie es halt schon 2-3 mal in dem Thread beschrieben wurde...


```
public static void main(String[] args) {
    	int betrag =777;    	
    	int[] werte = {500, 200, 100, 50, 20, 10, 5, 2, 1};  	   	
    	
    	for(int i = 0; i < werte.length;i++){
    		int anzahl =(int) (betrag/werte[i]);
     		betrag = betrag -anzahl*werte[i];  
    		if(anzahl>0)
        		System.out.println(anzahl +" X "+werte[i]+" Rest: "+betrag);
    	}
    }
```


----------



## Bavero (21. Jan 2012)

Hi da ich es noch ganz verstanden habe wie man ein eigenes Beitrag öffnet, habe ich es hier gemacht, da mein Problem fast das selbe ist: Ich soll einen KaffeAutomaten bauen der das Rückgeld, wie in der oben genannten aufgabe in münzwerte (2€,1€, 50cent usw)
Habe schon angefangen komme aber nicht richtig mit der rückgeld schleife weiter.


Hier die Klasse:
	
	
	
	





```
package paketKaffeeautomat;

import java.awt.Color;
import java.lang.reflect.Array;
import java.util.ArrayList;

public class Getraenk {
	
	private String auswahl;
	private double preis;
    private double einwurf;
    private double rest;
    ArrayList<Integer> restgeldausgabe= new ArrayList();
    
    
    
	public double getRest() {
		return rest;
	}



	public void setRest(double rest) {
		this.rest = rest;
	}



	public double getEinwurf() {
		return einwurf;
	}



	public void setEinwurf(double einwurf) {
		this.einwurf = einwurf;
	}



	public String getAuswahl() {
		return auswahl;
	}



	public void setAuswahl(String auswahl) {
		this.auswahl = auswahl;
	}



	public double getPreis() {
		return preis;
	}



	public void setPreis(double preis) {
		this.preis = preis;
	}

   public void berechnePreis(double pPreis)
   {
	   rest=einwurf-pPreis;
   }

	public void restgeld()
	{
		//der Datentyp double gibt nicht die komplette Kommazahl aus! Beispiel: 2.10 ist für double 2.1, deshalb wird durch 100 geteilt!
		rest=Math.rint((rest*100)/100.);
		
		
		
		
	//	int i=0;
		//while((rest=Math.rint(rest*100)/100.)/2.0>=1  )
		//{
			
			//System.out.println("2");			
			
			//Hier ein Array, es wird in jedes Fach eine Antwort gelegt
			
			     
			
			
			
			
			restgeldausgabe.add(i=i+1);
		rest=rest-2.0;
			
		}
	
	
	}
}
```

und hier das dazugehörende Hauptfenster



```
package paketKaffeeautomat;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;

public class Hauptfenster extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton btKaffee = null;
	private JButton btCappuccino = null;
	private JButton btEspresso = null;
	private JButton btLatteMacciato = null;
	private JButton btTee = null;
	private JButton btKakao = null;
	private JLabel ibEinwurf = null;
	private JScrollPane spAusgabe = null;
	private JTextArea taAusgabe = null;
	Getraenk einGetraenk=new Getraenk();  //  @jve:decl-index=0:

 
	private JTextField tfEinwurf = null;
	private JCheckBox cbZucker = null;
	private JCheckBox cbMilch = null;
	/**
	 * This is the default constructor
	 */
	public Hauptfenster() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(599, 344);
		this.setContentPane(getJContentPane());
		this.setTitle("");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			ibEinwurf = new JLabel();
			ibEinwurf.setBounds(new Rectangle(198, 14, 97, 17));
			ibEinwurf.setText("EInwurf");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getBtKaffee(), null);
			jContentPane.add(getBtCappuccino(), null);
			jContentPane.add(getBtEspresso(), null);
			jContentPane.add(getBtLatteMacciato(), null);
			jContentPane.add(getBtTee(), null);
			jContentPane.add(getBtKakao(), null);
			jContentPane.add(ibEinwurf, null);
			jContentPane.add(getSpAusgabe(), null);
			jContentPane.add(getTfEinwurf(), null);
			jContentPane.add(getCbZucker(), null);
			jContentPane.add(getCbMilch(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes btKaffee	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtKaffee() {
		if (btKaffee == null) {
			btKaffee = new JButton();
			btKaffee.setBounds(new Rectangle(31, 5, 145, 26));
			btKaffee.setText("Kaffee 1.40€");
			btKaffee.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Berechnen gedrückt"); // TODO Auto-generated Event stub actionPerformed()
					try
					{
						einGetraenk.setEinwurf(Double.parseDouble(tfEinwurf.getText()));
						
					}
					catch(NumberFormatException einF)
					{
					einGetraenk.setAuswahl("Kaffee");	
					einGetraenk.setPreis(1.40);
					einGetraenk.berechnePreis(einGetraenk.getPreis());
					if(einGetraenk.getPreis()<=0)
					{
						taAusgabe.append("Bitte werfen sie 1,40€ in den Automaten");
						//geld einwerfen!
					}
					if(einGetraenk.getPreis()<1.40)
					{
					//das Geld reicht nicht für Kaffee!
					taAusgabe.append("Das Geld  reicht nicht für Kaffee");
					
					}
					}
					
					if(einGetraenk.getPreis()>=1.40)
					{
					taAusgabe.append("Sie haben Kaffe gewählt, der Preis beträgt: "+einGetraenk.getPreis()+"€"+"\n");
					taAusgabe.append("Ihr Restgeld ist: "+einGetraenk.getRest()+"\n");
					einGetraenk.restgeld();
					taAusgabe.append("Ausgabe Anzahl 2 Euromünzen: "+einGetraenk.restgeldausgabe.get(0));
				/*	taAusgabe.append("Ausgabe Anzahl 1 Euromünzen:"+einGetraenk.restgeldausgabe.get(1));
					taAusgabe.append("Ausgabe Anzahl 50 Centmünzen:"+einGetraenk.restgeldausgabe.get(2));
					taAusgabe.append("Ausgabe Anzahl 20 Centmünzen:"+einGetraenk.restgeldausgabe.get(3));
					taAusgabe.append("Ausgabe Anzahl 10 Centmünzen:"+einGetraenk.restgeldausgabe.get(4));
					*/}
						
				
						}
			});
		}
		return btKaffee;
	
	}
	/**
	 * This method initializes btCappuccino	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtCappuccino() {
		if (btCappuccino == null) {
			btCappuccino = new JButton();
			btCappuccino.setBounds(new Rectangle(24, 73, 154, 26));
			btCappuccino.setText("Cappucciono 1,60€");
			btCappuccino.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				try
				{
					einGetraenk.setEinwurf(Double.parseDouble(tfEinwurf.getText()));
					
				}
				catch(NumberFormatException einF)
				{
				einGetraenk.setAuswahl("Cappuccino");	
				einGetraenk.setPreis(1.60);
				einGetraenk.berechnePreis(einGetraenk.getPreis());
				if(einGetraenk.getPreis()<=0)
				{JOptionPane.showMessageDialog(null,"Bitte werfen sie den gewünschten Betrag in den Automaten" );
					//geld einwerfen!
				}
				if(einGetraenk.getPreis()<1.20)
				{
					//das Geld reicht nicht für Tee!
				}
				}
				
				if(einGetraenk.getPreis()>=1.80)
				{
				taAusgabe.append("Sie haben Cappuccino gewählt, de Preis beträgt: "+einGetraenk.getPreis()+"€"+"\n");
				taAusgabe.append("Ihr Restgeld ist: "+einGetraenk.getRest()+"\n");
				einGetraenk.restgeld();
				taAusgabe.append("Ausgabe Anzahl 2 Euromünzen: "+einGetraenk.restgeldausgabe.get(0));
				}
				else {
					
				}
				}
			});
		}
		return btCappuccino;
	}

	/**
	 * This method initializes btEspresso	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtEspresso() {
		if (btEspresso == null) {
			btEspresso = new JButton();
			btEspresso.setBounds(new Rectangle(23, 145, 151, 26));
			btEspresso.setText(" Espresso 1,40€");
			btEspresso.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
			
				
				

					try
					{
						einGetraenk.setEinwurf(Double.parseDouble(tfEinwurf.getText()));
						
					}
					catch(NumberFormatException einF)
					{
					einGetraenk.setAuswahl("Espresso");	
					einGetraenk.setPreis(1.40);
					einGetraenk.berechnePreis(einGetraenk.getPreis());
					if(einGetraenk.getPreis()<=0)
					{
						taAusgabe.append("Bitte werfen sie 1,40€ in den Automaten");
						//geld einwerfen!
					}
					if(einGetraenk.getPreis()<1.40)
					{
					//das Geld reicht nicht für Espresso!
					taAusgabe.append("Das Geld  reicht nicht für Espresso");
					
					}
					}
					
					if(einGetraenk.getPreis()>=1.40)
					{
					taAusgabe.append("Sie haben Espresso gewählt, de Preis beträgt: "+einGetraenk.getPreis()+"€"+"\n");
					taAusgabe.append("Ihr Restgeld ist: "+einGetraenk.getRest()+"\n");
					einGetraenk.restgeld();
					taAusgabe.append("Ausgabe Anzahl 2 Euromünzen: "+einGetraenk.restgeldausgabe.get(0));
				/*	taAusgabe.append("Ausgabe Anzahl 1 Euromünzen:"+einGetraenk.restgeldausgabe.get(1));
					taAusgabe.append("Ausgabe Anzahl 50 Centmünzen:"+einGetraenk.restgeldausgabe.get(2));
					taAusgabe.append("Ausgabe Anzahl 20 Centmünzen:"+einGetraenk.restgeldausgabe.get(3));
					taAusgabe.append("Ausgabe Anzahl 10 Centmünzen:"+einGetraenk.restgeldausgabe.get(4));
					*/}
					
				
				
				}
			});
			
				
				
				
				
				
			} 
			
			
			
			
			
		
		return btEspresso;
	}

	/**
	 * This method initializes btLatteMacciato	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtLatteMacciato() {
		if (btLatteMacciato == null) {
			btLatteMacciato = new JButton();
			btLatteMacciato.setBounds(new Rectangle(24, 185, 153, 26));
			btLatteMacciato.setText("Latte Macciato 1,80€");
			btLatteMacciato.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					try
					{
						einGetraenk.setEinwurf(Double.parseDouble(tfEinwurf.getText()));
						
					}
					catch(NumberFormatException einF)
					{
					einGetraenk.setAuswahl("Latte Macciato");	
					einGetraenk.setPreis(1.80);
					einGetraenk.berechnePreis(einGetraenk.getPreis());
					if(einGetraenk.getPreis()<=0)
					{
						taAusgabe.append("Bitte werfen sie 1,80€ in den Automaten");
						//geld einwerfen!
					}
					if(einGetraenk.getPreis()<1.80)
					{
					//das Geld reicht nicht für Latte Macciato!
					taAusgabe.append("Das Geld  reicht nicht für Latte Macciato");
					
					}
					}
					
					if(einGetraenk.getPreis()>=1.80)
					{
					taAusgabe.append("Sie haben Latte Macciato gewählt, de Preis beträgt: "+einGetraenk.getPreis()+"€"+"\n");
					taAusgabe.append("Ihr Restgeld ist: "+einGetraenk.getRest()+"\n");
					einGetraenk.restgeld();
					taAusgabe.append("Ausgabe Anzahl 2 Euromünzen: "+einGetraenk.restgeldausgabe.get(0));
				/*	taAusgabe.append("Ausgabe Anzahl 1 Euromünzen:"+einGetraenk.restgeldausgabe.get(1));
					taAusgabe.append("Ausgabe Anzahl 50 Centmünzen:"+einGetraenk.restgeldausgabe.get(2));
					taAusgabe.append("Ausgabe Anzahl 20 Centmünzen:"+einGetraenk.restgeldausgabe.get(3));
					taAusgabe.append("Ausgabe Anzahl 10 Centmünzen:"+einGetraenk.restgeldausgabe.get(4));
					*/}
					
				
				}
			});
		}
		return btLatteMacciato;
	}

	/**
	 * This method initializes btTee	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtTee() {
		if (btTee == null) {
			btTee = new JButton();
			btTee.setBounds(new Rectangle(28, 39, 147, 26));
			btTee.setText(" Tee  1,20€");
			btTee.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("Tee"); 
					try
					{einGetraenk.setEinwurf(Double.parseDouble(tfEinwurf.getText()));
					}
					catch(NumberFormatException einf)
					{
						
					}
					
					einGetraenk.setAuswahl("Tee");
					einGetraenk.setPreis(1.20);
					einGetraenk.berechnePreis(einGetraenk.getPreis());
					if(einGetraenk.getPreis()<=0)
					{
						//geld einwerfen!
					}
					if(einGetraenk.getPreis()<1.20)
					{
						
						//das Geld reicht nicht für Tee!
					}
					if(einGetraenk.getPreis()>=1.20)
					{
					int i=0;
					while(einGetraenk.getPreis()>=1.20)
							{
						
						i=i+(1/2);	
						
						taAusgabe.append("Sie haben Tee gewählt, de Preis beträgt: "+einGetraenk.getPreis()+"€"+"\n");
					taAusgabe.append("Ihr Restgeld ist: "+einGetraenk.getRest()+"\n");
					einGetraenk.restgeld();
					taAusgabe.append("Ausgabe Anzahl 2 Euromünzen: "+einGetraenk.restgeldausgabe.get(0));
			
					
						
							}
						
					}
					
					
					
					
				}
			});
		}
		return btTee;
	}

	/**
	 * This method initializes btKakao	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtKakao() {
		if (btKakao == null) {
			btKakao = new JButton();
			btKakao.setBounds(new Rectangle(25, 110, 151, 26));
			btKakao.setText(" Kakao 1,50€");
			btKakao.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
					try
					{
						einGetraenk.setEinwurf(Double.parseDouble(tfEinwurf.getText()));
						
					}
					catch(NumberFormatException einF)
					{
					einGetraenk.setAuswahl("Kakao");	
					einGetraenk.setPreis(1.50);
					einGetraenk.berechnePreis(einGetraenk.getPreis());
					if(einGetraenk.getPreis()<=0)
					{
						taAusgabe.append("Bitte werfen sie 1,60€ in den Automaten");
						//geld einwerfen!
					}
					if(einGetraenk.getPreis()<1.50)
					{
					//das Geld reicht nicht für Kakao!
					taAusgabe.append("Das Geld  reicht nicht für kakao");
					
					}
					}
					
					if(einGetraenk.getPreis()>=1.50)
					{
					taAusgabe.append("Sie haben Kakao gewählt, de Preis beträgt: "+einGetraenk.getPreis()+"€"+"\n");
					taAusgabe.append("Ihr Restgeld ist: "+einGetraenk.getRest()+"\n");
					einGetraenk.restgeld();
					taAusgabe.append("Ausgabe Anzahl 2 Euromünzen: "+einGetraenk.restgeldausgabe.get(0));
			/*		taAusgabe.append("Ausgabe Anzahl 1 Euromünzen:"+einGetraenk.restgeldausgabe.get(1));
					taAusgabe.append("Ausgabe Anzahl 50 Centmünzen:"+einGetraenk.restgeldausgabe.get(2));
					taAusgabe.append("Ausgabe Anzahl 20 Centmünzen:"+einGetraenk.restgeldausgabe.get(3));
					taAusgabe.append("Ausgabe Anzahl 10 Centmünzen:"+einGetraenk.restgeldausgabe.get(4));
				*/	}
					
				}
			});
		}
		return btKakao;
	}

	/**
	 * This method initializes spAusgabe	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getSpAusgabe() {
		if (spAusgabe == null) {
			spAusgabe = new JScrollPane();
			spAusgabe.setBounds(new Rectangle(193, 82, 250, 188));
			spAusgabe.setViewportView(getTaAusgabe());
		}
		return spAusgabe;
	}

	/**
	 * This method initializes taAusgabe	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getTaAusgabe() {
		if (taAusgabe == null) {
			taAusgabe = new JTextArea();
		}
		return taAusgabe;
	}

	/**
	 * This method initializes tfEinwurf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTfEinwurf() {
		if (tfEinwurf == null) {
			tfEinwurf = new JTextField();
			tfEinwurf.setBounds(new Rectangle(316, 13, 125, 21));
		}
		return tfEinwurf;
	}

	/**
	 * This method initializes cbZucker	
	 * 	
	 * @return javax.swing.JCheckBox	
	 */
	private JCheckBox getCbZucker() {
		if (cbZucker == null) {
			cbZucker = new JCheckBox();
			cbZucker.setBounds(new Rectangle(201, 56, 101, 19));
			cbZucker.setText("Mit Zucker");
	if(cbZucker.isSelected())
	{
		taAusgabe.append("Ihr Getränk enthält Zucker");
		
		
	}
		
		
		
		}
		return cbZucker;
	}

	/**
	 * This method initializes cbMilch	
	 * 	
	 * @return javax.swing.JCheckBox	
	 */
	private JCheckBox getCbMilch() {
		if (cbMilch == null) {
			cbMilch = new JCheckBox();
			cbMilch.setBounds(new Rectangle(299, 56, 96, 17));
			cbMilch.setText("Mit Milch");
if(cbMilch.isSelected())
{
taAusgabe.append("Sie haben Ihr Getränk mit Milch genommen");	
}
		
		}
		return cbMilch;
	}

}  //  @jve:decl-index=0:visual-constraint="54,4"
```

würde mich freuen wennn ihr es mir am bsp eines meiner getränke erklären könntet.

Danke schon mal im vorraus


----------



## njans (21. Jan 2012)

```
public void restgeld()
	{
		// Generell wuerde ich eher mit Cent betraegen rechnen, ist angenehmer
		// Wenn du 3.50 Euro hast, dann machst du daraus 350 Cent
		int restBetrag = (int) (rest * 100);

		// Array der Muenzen in Cent betraegen
		final int[] muenzen = { 200, 100, 50, 20, 10, 5, 2, 1 };

		// Wenn es ueberhaupt restgeld zurueckzugeben gibt
		if (restBetrag != 0)
		{
			for (int j = 0; j < muenzen.length; j++)
			{
				int anzahlMuenzen = 0;

				while (restBetrag / muenzen[j] > 0)
				{
					restBetrag -= muenzen[j];
					anzahlMuenzen++;
				}

				if (anzahlMuenzen > 0)
				{
					System.out.println("Es wurden " + anzahlMuenzen + " mal "
							+ muenzen[j] + "ter Muenzen verwendet.");
				}
			}
		}
		rest = restBetrag;
		System.out.println(rest);
		// Restgeld dann noch ausgeben lassen
	}
```

Sowas meinst du?


----------



## California (21. Jan 2012)

Schaust Du hier:

http://www.java-forum.org/allgemein...thmus-kassenautomat-sackgasse.html#post851192

Aah ja, statt Münzen gehen auch Scheine, falls man das dazusagen muss...

Immer dasselbe ;-)


----------

