# Getränkeautomat



## lexa (20. Mai 2007)

Hallo.
Ich muss eine Benutzeroberfläche für einen Getränkeautomat erstellen.
Mein Problem liegt bei der Bezahlung.
Wie schaffe ich, dass der eingegebene Bertrag im JTextField als zahl gespeichert ist (mit einem Integer, dass verstehe ich, aber an welcher Stelle im Programm?)
und wie passiert es, dass dann je nach Betrag Sie müssen noch bezahlen, oder Sie bekommen rückgeld, oder passend erscheint?
Hier mein Programm:

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class UI extends JFrame
{
// Anfang Variablen
double euro;
String s;
JTextField eingabe = new JTextField();
JButton aktion1 = new JButton("Fanta");
JButton aktion2 = new JButton("Cola");
JButton aktion3 = new JButton("Sprite");
JButton aktion4 = new JButton("Wasser");
JLabel ausgabe = new JLabel("Bitte Münzen einwerfen!");
// Ende Variablen

public UI(Ctrl c)
{
// Frame-Initialisierung
super("Getraenkeautomat");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
int frameWidth = 800;
int frameHeight = 800;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 80;
int y = (d.height - getSize().height) /80 ;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(new GridLayout(10,2));
// Anfang Komponenten
aktion1.addActionListener( c );
aktion1.setActionCommand("Fanta");


aktion2.addActionListener( c );
aktion2.setActionCommand("Das Getränk kostet 2,50");
aktion3.addActionListener( c );
aktion3.setActionCommand("Das Getränk kostet 2,50");
aktion4.addActionListener( c );
aktion4.setActionCommand("Das Getränk kostet 2,50");
eingabe.addActionListener (c);
eingabe.setActionCommand("eingabe");






cp.add(aktion1);
cp.add(aktion2);
cp.add(aktion3);
cp.add(aktion4);
cp.add(eingabe);
cp.add(ausgabe);
//cp.add(ausgabe);
// Ende Komponenten

setResizable(false);
setVisible(true);
}


public String getEingabe()
{
return eingabe.getText();

}
public void Eingabe()
{
s=eingabe.getText();
euro=Double.valueOf(s).doubleValue();
if (euro<2.50)
{
double sf= 2.50 -euro;
// System.out.println("Bitte "+sf+"einwerfen");
}
else if (euro>2.50)
{
double t=euro-2.50;
// System.out.println("Danke für Ihren Einwurf! Bitte entnehmen Sie Ihr Getränk!");
// System.out.println("Sie kriegen noch "+t+"Rückgeld");
}

}

public void setAnzeige( String text )
{
eingabe.setText( text );

import java.awt.event.*;

public class Ctrl implements ActionListener
{
private UI fenster;
public Ctrl()
{
fenster = new UI( this );
}

public void actionPerformed(ActionEvent e)
{

if ( e.getActionCommand().equals("Fanta") )
{
fenster.setAnzeige("Das Getränk kostet 2,50");
}



else if ( e.getActionCommand().equals("Cola") )
{
fenster.setAnzeige("Das Getränk kostet 2,50");
}
else if ( e.getActionCommand().equals("Wasser") )
{
fenster.setAnzeige("Das Getränk kostet 2,50");
}
else if ( e.getActionCommand().equals("Sprite") )
{
fenster.setAnzeige("Das Getränk kostet 2,50");
}
else if ( e.getActionCommand().equals("eingabe") )

{
fenster.setAnzeige("Danke für Ihren Einwurf! Bitte entnehmen Sie Ihr Getränk!");

}



else if ( e.getActionCommand().equals("Münze") )
{
fenster.setAnzeige(" Bitte Münzen einwerfen : "+fenster.getEingabe());
}
}
}
```
und noch eine Startklasse.
Wäre sehr nett, wenn mir jemand helfen könnte.
Danke im Voraus,
Lexa


_Dieser Beitrag wurde von L-ectron-X am 20.05.2007 um 12:46 Uhr editiert.
Code-Tags eingefügt._


----------



## schoppenhauer_entfernt_ (20. Mai 2007)

Es ist ja nicht so, dass man in *penetranter Weise* vor dem Posten dazu aufgefordert wird, aber... Hast du schon mal was von Code-Tags gehört... Und siehst du den Code-Button über deinem Beitrag, wenn du einen schreiben willst?


----------



## lexa (20. Mai 2007)

Sorry, hab ich nicht.
Was soll das sein?


----------



## schoppenhauer_entfernt_ (20. Mai 2007)

Ah. Die freundlichen Mods haben das für dich erledigt. Wenn du Java-Quellcode postest, setze den doch bitte immer zwischen *[*code*]* und *[*/code*]*. (Die Eckigen klammern hab ich fett gemacht, weil sonst der Quelltext das als richtige code-tags interpretiert).
Ansonsten schau dir mal Integer.parseInt an... Also du kannst jederzeit einen Integer in seine dezimale String-Repräsentation umwandeln, und umgekehrt...


----------



## L-ectron-X (20. Mai 2007)

Hi lexa, dein Code ist ziemlich konfus und voller Fehler. Wenn du zunächst erst mal die Codezeilen richtig ausrichtest, werden dir schon die ersten Fehler ins Auge springen.


----------



## lexa (20. Mai 2007)

Wow. Danke.
Das mit dem Integer ist mir schon klar. ich verstehe nur nicht in welcher Klass das erfolgen muss und an welcher Stelle.
Sozusagen muss das Programm eine Schleife durchlaufen, in der es den eingegebenen Betrag überprüft und dann etwas im Fenster ausgibt oder? :?


----------



## lexa (20. Mai 2007)

Ps:
Hab versucht die Zeilen richtig auszurichten. 
Doch das mit dem Bezahlen funktioniert immer noch nicht. 
Vielleicht find ich meine Fehler auch nicht.
Könnt Ihr mir vielleicht einen Tipp geben, bitte?


----------

