Taschenrechner mit AWT, DenkProblem? :|

Tsa

Mitglied
Hey Leute...
ich leite ein Projekt in der Schule bei dem wir am Ende des Projekts einen Taschenrechner programmiert haben sollten in einem Kurs. Nun habe ich gedacht "Eigentlich doch kein Problem" Und habe erst gestern angefangen die Musterlösung zu schreiben! Mh naja, irgendwie will er nicht funktionieren und ich komme einfach nicht dahinter, wo mein Denkfehler (ich denke, es ist ein Denkfehler und kein Programmier fehler ansich...) liegt.
Wäre nett, wenn ihr mal drüberschauen könntet, vielleicht sticht euch ja was ins Auge?! :)
Vielen Dank schonmal,
Jens

Code:
Fenster.java

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.TextField;

public class Fenster extends Frame
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private Button btn1;
	private Button btn2;
	private Button btn3;
	private Button btn4;
	private Button btn5;
	private Button btn6;
	private Button btn7;
	private Button btn8;
	private Button btn9;
	private Button btn0;
	
	private Button btnMal;
	private Button btnPlus;
	private Button btnGeteilt;
	private Button btnMinus;
	
	private TextField txtgesamtErgebnis;
	private TextField txtterm;
	
	public Fenster()
	{
		
		btn1 = new Button("1");
		btn2 = new Button("2");
		btn3 = new Button("3");
		btn4 = new Button("4");
		btn5 = new Button("5");
		btn6 = new Button("6");
		btn7 = new Button("7");
		btn8 = new Button("8");
		btn9 = new Button("9");
		btn0 = new Button("0");
		
		btnMal = new Button("*");
		btnGeteilt = new Button("/");
		btnPlus = new Button("+");
		btnMinus= new Button("-");
		
		txtgesamtErgebnis = new TextField("0");
		txtgesamtErgebnis.setEditable(false);
		txtterm = new TextField("0");
		txtterm.setEditable(false);
		
		setTitle("Taschenrechner");
		setSize(300,100);
		setLayout(new GridLayout(4,4));
		
		btn1.addActionListener(new ActionEvents(this));
		btn2.addActionListener(new ActionEvents(this));
		btn3.addActionListener(new ActionEvents(this));
		btn4.addActionListener(new ActionEvents(this));
		btn5.addActionListener(new ActionEvents(this));
		btn6.addActionListener(new ActionEvents(this));
		btn7.addActionListener(new ActionEvents(this));
		btn8.addActionListener(new ActionEvents(this));
		btn9.addActionListener(new ActionEvents(this));
		btn0.addActionListener(new ActionEvents(this));
		btnPlus.addActionListener(new ActionEvents(this));
		btnMinus.addActionListener(new ActionEvents(this));
		btnMal.addActionListener(new ActionEvents(this));
		btnGeteilt.addActionListener(new ActionEvents(this));
		
		add(btn1);
		add(btn2);
		add(btn3);
		add(btn4);
		add(btn5);
		add(btn6);
		add(btn7);
		add(btn8);
		add(btn9);
		add(btn0);
		
		add(btnPlus);
		add(btnMinus);
		add(btnMal);
		add(btnGeteilt);
		
		add(txtgesamtErgebnis);
		add(txtterm);
		
		
		addWindowListener(new WindowManager());
		
		setVisible(true);
	}
	
	public void aktualisiereErgebnis(double no){
		txtgesamtErgebnis.setText(""+no);
	}
	public void aktualisiereTerm(String text){
		txtterm.setText(text);
	}
	/**
	 * @return Returns the btn0.
	 */
	public Button getBtn0() {
		return btn0;
	}

	/**
	 * @return Returns the btn1.
	 */
	public Button getBtn1() {
		return btn1;
	}

	/**
	 * @return Returns the btn2.
	 */
	public Button getBtn2() {
		return btn2;
	}

	/**
	 * @return Returns the btn3.
	 */
	public Button getBtn3() {
		return btn3;
	}

	/**
	 * @return Returns the btn4.
	 */
	public Button getBtn4() {
		return btn4;
	}

	/**
	 * @return Returns the btn5.
	 */
	public Button getBtn5() {
		return btn5;
	}

	/**
	 * @return Returns the btn6.
	 */
	public Button getBtn6() {
		return btn6;
	}

	/**
	 * @return Returns the btn7.
	 */
	public Button getBtn7() {
		return btn7;
	}

	/**
	 * @return Returns the btn8.
	 */
	public Button getBtn8() {
		return btn8;
	}

	/**
	 * @return Returns the btn9.
	 */
	public Button getBtn9() {
		return btn9;
	}

	/**
	 * @return Returns the btnGeteilt.
	 */
	public Button getBtnGeteilt() {
		return btnGeteilt;
	}

	/**
	 * @return Returns the btnMal.
	 */
	public Button getBtnMal() {
		return btnMal;
	}

	/**
	 * @return Returns the btnMinus.
	 */
	public Button getBtnMinus() {
		return btnMinus;
	}

	/**
	 * @return Returns the btnPlus.
	 */
	public Button getBtnPlus() {
		return btnPlus;
	}

	/**
	 * @return Returns the txtgesamtErgebnis.
	 */
	public TextField getTxtgesamtErgebnis() {
		return txtgesamtErgebnis;
	}

	/**
	 * @return Returns the txtterm.
	 */
	public TextField getTxtterm() {
		return txtterm;
	}

	/**
	 * @param btn0 The btn0 to set.
	 */
	public void setBtn0(Button btn0) {
		this.btn0 = btn0;
	}

	/**
	 * @param btn1 The btn1 to set.
	 */
	public void setBtn1(Button btn1) {
		this.btn1 = btn1;
	}

	/**
	 * @param btn2 The btn2 to set.
	 */
	public void setBtn2(Button btn2) {
		this.btn2 = btn2;
	}

	/**
	 * @param btn3 The btn3 to set.
	 */
	public void setBtn3(Button btn3) {
		this.btn3 = btn3;
	}

	/**
	 * @param btn4 The btn4 to set.
	 */
	public void setBtn4(Button btn4) {
		this.btn4 = btn4;
	}

	/**
	 * @param btn5 The btn5 to set.
	 */
	public void setBtn5(Button btn5) {
		this.btn5 = btn5;
	}

	/**
	 * @param btn6 The btn6 to set.
	 */
	public void setBtn6(Button btn6) {
		this.btn6 = btn6;
	}

	/**
	 * @param btn7 The btn7 to set.
	 */
	public void setBtn7(Button btn7) {
		this.btn7 = btn7;
	}

	/**
	 * @param btn8 The btn8 to set.
	 */
	public void setBtn8(Button btn8) {
		this.btn8 = btn8;
	}

	/**
	 * @param btn9 The btn9 to set.
	 */
	public void setBtn9(Button btn9) {
		this.btn9 = btn9;
	}

	/**
	 * @param btnGeteilt The btnGeteilt to set.
	 */
	public void setBtnGeteilt(Button btnGeteilt) {
		this.btnGeteilt = btnGeteilt;
	}

	/**
	 * @param btnMal The btnMal to set.
	 */
	public void setBtnMal(Button btnMal) {
		this.btnMal = btnMal;
	}

	/**
	 * @param btnMinus The btnMinus to set.
	 */
	public void setBtnMinus(Button btnMinus) {
		this.btnMinus = btnMinus;
	}

	/**
	 * @param btnPlus The btnPlus to set.
	 */
	public void setBtnPlus(Button btnPlus) {
		this.btnPlus = btnPlus;
	}

	/**
	 * @param txtgesamtErgebnis The txtgesamtErgebnis to set.
	 */
	public void setTxtgesamtErgebnis(TextField gesamtErgebnis) {
		txtgesamtErgebnis = gesamtErgebnis;
	}

	/**
	 * @param txtterm The txtterm to set.
	 */
	public void setTxtterm(TextField term) {
		txtterm = term;
	}

}

Code:
ActionEvents.java

import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ActionEvents implements ActionListener {
	private Fenster fenster;
	private double ersteZahl;
	private double zuOperierendeZahl;
	private double neuesGesamtErgebnis;
	private boolean nochKeineOperation = true;
	private Button sourceBtn;
	private char[] operatorArray;
	private char operator;
	public ActionEvents(Fenster fenster){
		this.fenster = fenster;
	}
	public void actionPerformed(ActionEvent arg0) {
		
		ersteZahl = Double.parseDouble(fenster.getTxtgesamtErgebnis().getText());
		if(!nochKeineOperation){
			if(arg0.getSource() == fenster.getBtnPlus() || arg0.getSource() == fenster.getBtnMinus() || arg0.getSource() == fenster.getBtnMal() || arg0.getSource() == fenster.getBtnGeteilt()){
				sourceBtn = (Button) arg0.getSource();
				operatorArray = sourceBtn.getLabel().toCharArray();
				operator = operatorArray[0];
				
				switch(operator){
					case '+': neuesGesamtErgebnis = ersteZahl + zuOperierendeZahl;
								System.out.println(neuesGesamtErgebnis);
					case '-': neuesGesamtErgebnis = ersteZahl - zuOperierendeZahl;
								System.out.println(neuesGesamtErgebnis);
					case '*': neuesGesamtErgebnis = ersteZahl * zuOperierendeZahl;
								System.out.println(neuesGesamtErgebnis);
					case '/': neuesGesamtErgebnis = ersteZahl / zuOperierendeZahl;
								System.out.println(neuesGesamtErgebnis);
				}
				zuOperierendeZahl = 0;
				fenster.getTxtgesamtErgebnis().setText(""+neuesGesamtErgebnis);
			}
			else{
				zuOperierendeZahl = zuOperierendeZahl * 10 + Integer.parseInt(sourceBtn.getLabel());
			}
			
			
		} else{
			neuesGesamtErgebnis = ersteZahl + zuOperierendeZahl;
			nochKeineOperation = true;
		}
	}

}

Code:
MainClass.java

public class MainClass {

	public static void main(String[] args){
		new Fenster();
	}
}

Code:
WindowManager.java

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class WindowManager extends WindowAdapter{

	public void windowClosing(WindowEvent we){
		System.exit(1);
	}
}
 
*gg* Ich wäre froh wenn ich eine bekäm! ;)
Hab mal durchgetest! Und habe if(!nochKeineOperation) weggelassen!
Nun bekomm ich eine NullPointerException!
In folgender Zeile motzt er rum:

zuOperierendeZahl = zuOperierendeZahl * 10 + Integer.parseInt(sourceBtn.getLabel());

mit folgendem kompletten Fehler:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at gui.ActionEvents.actionPerformed(ActionEvents.java:51)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

so, habe dann folgendes Versucht:
try{
zuOperierendeZahl = zuOperierendeZahl * 10 + Integer.parseInt(sourceBtn.getLabel());
System.out.println(zuOperierendeZahl);
}
catch(NullPointerException npe)
{
zuOperierendeZahl = 0;
zuOperierendeZahl += Integer.parseInt(sourceBtn.getLabel());
}

nun sagt er den gleichen fehler im catch. :| Hat es vielleicht etwas mit: sourceBtn.getLabel() zu tun?

Ratlos )c:
Naja immerhin ein wenig weiter!
 
Hallo Tsa,

das Problem liegt in folgender Zeile:
sourceBtn = (Button) arg0.getSource();

Diese hast du in der if-Clause implementiert. Wenn die Bedingung nicht zutrifft wird die obige Zeile natürlich nicht ausgeführt und damit steht in der Variablen sourceBtn die Null. Für die Null kannst du nun offensichtlich nicht getLabel() ausführen.

Also dein Code sieht auf den ersten Blick etwas umständlich aus. Hier mal ein mini-Taschenrechner den ich mal als Beispiel geschrieben hatte:
http://www.tutorials.de/forum/java/242839-buttons-und-wertezuweisung.html


Vg Erdal
 
Hey,
vielen Dank, jedoch ist es wohl nicht ganz das, was ich benötige! ich Versuche einen Sequenziellen Taschenrechner zu schreiben. Deiner scheint (ich habs nicht ausprobiert) über ein Textfeld wo erst alles angezeigt wird zu funktionieren! Meiner soll direkt addieren. Man gibt die Zahl ein und es erscheint das Ergebnis.

Folgendes ist nun noch mein Problem:
Ich gebe eine Zahl ein... diese wird Zwischengespeichert. Nun wähle ich den Operator, dieser muss nun jedoch auf eine weitere Zahl warten. Nur wie speichere ich praktisch den Operator, bis die 2. Zahl angekommen ist?! Da hakts bei mir noch "ein wenig"! Ein kleiner Denkanstoß wäre wirklich hilfreich ;)

Tschööö,
Jens
 
Hallo Jens,

definiere dir 3 Variablen:

double a <- erste Zahl
double b <- zweite Zahl
char o <- Operator

Dann brauchst du noch ein switch mit 4 case-Fällen für jeden Operator +,-,*,/.

Der switch überprüft zu welchem case der Operator aus der Variablen o passt und führt die Rechnung aus.

Hier noch ein simpler Rechner für die Console den ich in jungen Jahren geschrieben hatte:

Java:
/*
 * Created on 06.12.2004
 * 
 * C:\JAVA\ECLPS\Calc>java Calc 2 + 3
 * 5.0
 * C:\JAVA\ECLPS\Calc>java Calc 2 - 3
 * -1.0
 * C:\JAVA\ECLPS\Calc>java Calc 2 . 3
 * 6.0
 * C:\JAVA\ECLPS\Calc>java Calc 2 / 3
 * 0.6666666666666666
 * C:\JAVA\ECLPS\Calc>java Calc 2 % 3
 * 2.0
 * C:\JAVA\ECLPS\Calc>java Calc wronginput % 3
 * Error  Check your insert please!
 * 
 * C:\JAVA\ECLPS\Calc>java Calc wronginput
 * Error  Check your insert please!
 */


class Calc {
	public static void main(String[] args) {
		try {
			double a = Double.parseDouble(args[0]);
			char clc = (args[1]).charAt(0);
			double b = Double.parseDouble(args[2]);
			switch (clc) {
			case '+':
				a = a + b;
				break;
			case '-':
				a = a - b;
				break;
			case '.':
				a = a * b;
				break;
			case '/':
				a = a / b;
				break;
			case '%':
				a = a % b;
				break;
			default:
				System.out.println("Error  Check your insert please!");
				}
			if ((clc == '+') | (clc == '-') | (clc == '.') | (clc == '/')
					| (clc == '%'))
				System.out.print(a);
		} catch (Exception e) {
			System.out.println("Error  Check your insert please!");
		}
	}
}


Vg Erdal
 
Zuletzt bearbeitet:
Uff,
Vielen Dank :) Also ich habs jetzt geschafft! Leider nicht Sequentiell, aber ich habe einen Taschenrechner... Warum der Sequentiell sein sollte, versteh ich nicht mehr :D
Vielen Dank für deine Unterstützung! Ich hänge nun nochmal meine Klassen für nachfolgende Sucher an, in der Hoffnung damit noch ein paar Leuten zu helfen! :)
Es ist kein 1. Klassiker code und das Layout ist noch nicht sehr schön, doch die wichtigen Denkschritte sind denke ich gut zu erkennen!

Code:
Fenster.java

import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.TextField;

public class Fenster extends Frame
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private Button btn1;
	private Button btn2;
	private Button btn3;
	private Button btn4;
	private Button btn5;
	private Button btn6;
	private Button btn7;
	private Button btn8;
	private Button btn9;
	private Button btn0;
	
	private Button btnMal;
	private Button btnPlus;
	private Button btnGeteilt;
	private Button btnMinus;
	private Button btnGleich;
	
	private TextField txtgesamtErgebnis;
	private TextField txtterm;
	
	public Fenster()
	{
		
		btn1 = new Button("1");
		btn2 = new Button("2");
		btn3 = new Button("3");
		btn4 = new Button("4");
		btn5 = new Button("5");
		btn6 = new Button("6");
		btn7 = new Button("7");
		btn8 = new Button("8");
		btn9 = new Button("9");
		btn0 = new Button("0");
		
		btnMal = new Button("*");
		btnGeteilt = new Button("/");
		btnPlus = new Button("+");
		btnMinus= new Button("-");
		btnGleich = new Button("=");
		
		txtgesamtErgebnis = new TextField("0");
		txtgesamtErgebnis.setEditable(false);
		txtterm = new TextField("0");
		txtterm.setEditable(false);
		
		setTitle("Taschenrechner");
		setSize(300,100);
		setLayout(new GridLayout(5,4));
		
		btn1.addActionListener(new ZahlenAction(this));
		btn2.addActionListener(new ZahlenAction(this));
		btn3.addActionListener(new ZahlenAction(this));
		btn4.addActionListener(new ZahlenAction(this));
		btn5.addActionListener(new ZahlenAction(this));
		btn6.addActionListener(new ZahlenAction(this));
		btn7.addActionListener(new ZahlenAction(this));
		btn8.addActionListener(new ZahlenAction(this));
		btn9.addActionListener(new ZahlenAction(this));
		btn0.addActionListener(new ZahlenAction(this));
		btnPlus.addActionListener(new OperatorAction(this));
		btnMinus.addActionListener(new OperatorAction(this));
		btnMal.addActionListener(new OperatorAction(this));
		btnGeteilt.addActionListener(new OperatorAction(this));
		btnGleich.addActionListener(new OperatorAction(this));
		
		add(btn1);
		add(btn2);
		add(btn3);
		add(btn4);
		add(btn5);
		add(btn6);
		add(btn7);
		add(btn8);
		add(btn9);
		add(btn0);
		
		add(btnPlus);
		add(btnMinus);
		add(btnMal);
		add(btnGeteilt);
		add(btnGleich);
		
		add(txtgesamtErgebnis);
		add(txtterm);
		
		
		addWindowListener(new WindowManager());
		
		setVisible(true);
	}
	
	public void aktualisiereErgebnis(double no){
		txtgesamtErgebnis.setText(""+no);
	}
	public void aktualisiereTerm(String text){
		txtterm.setText(text);
	}
	/**
	 * @return Returns the btn0.
	 */
	public Button getBtn0() {
		return btn0;
	}

	/**
	 * @return Returns the btn1.
	 */
	public Button getBtn1() {
		return btn1;
	}

	/**
	 * @return Returns the btn2.
	 */
	public Button getBtn2() {
		return btn2;
	}

	/**
	 * @return Returns the btn3.
	 */
	public Button getBtn3() {
		return btn3;
	}

	/**
	 * @return Returns the btn4.
	 */
	public Button getBtn4() {
		return btn4;
	}

	/**
	 * @return Returns the btn5.
	 */
	public Button getBtn5() {
		return btn5;
	}

	/**
	 * @return Returns the btn6.
	 */
	public Button getBtn6() {
		return btn6;
	}

	/**
	 * @return Returns the btn7.
	 */
	public Button getBtn7() {
		return btn7;
	}

	/**
	 * @return Returns the btn8.
	 */
	public Button getBtn8() {
		return btn8;
	}

	/**
	 * @return Returns the btn9.
	 */
	public Button getBtn9() {
		return btn9;
	}

	/**
	 * @return Returns the btnGeteilt.
	 */
	public Button getBtnGeteilt() {
		return btnGeteilt;
	}

	/**
	 * @return Returns the btnMal.
	 */
	public Button getBtnMal() {
		return btnMal;
	}

	/**
	 * @return Returns the btnMinus.
	 */
	public Button getBtnMinus() {
		return btnMinus;
	}

	/**
	 * @return Returns the btnPlus.
	 */
	public Button getBtnPlus() {
		return btnPlus;
	}

	/**
	 * @return Returns the txtgesamtErgebnis.
	 */
	public TextField getTxtgesamtErgebnis() {
		return txtgesamtErgebnis;
	}

	/**
	 * @return Returns the txtterm.
	 */
	public TextField getTxtterm() {
		return txtterm;
	}

	/**
	 * @param btn0 The btn0 to set.
	 */
	public void setBtn0(Button btn0) {
		this.btn0 = btn0;
	}

	/**
	 * @param btn1 The btn1 to set.
	 */
	public void setBtn1(Button btn1) {
		this.btn1 = btn1;
	}

	/**
	 * @param btn2 The btn2 to set.
	 */
	public void setBtn2(Button btn2) {
		this.btn2 = btn2;
	}

	/**
	 * @param btn3 The btn3 to set.
	 */
	public void setBtn3(Button btn3) {
		this.btn3 = btn3;
	}

	/**
	 * @param btn4 The btn4 to set.
	 */
	public void setBtn4(Button btn4) {
		this.btn4 = btn4;
	}

	/**
	 * @param btn5 The btn5 to set.
	 */
	public void setBtn5(Button btn5) {
		this.btn5 = btn5;
	}

	/**
	 * @param btn6 The btn6 to set.
	 */
	public void setBtn6(Button btn6) {
		this.btn6 = btn6;
	}

	/**
	 * @param btn7 The btn7 to set.
	 */
	public void setBtn7(Button btn7) {
		this.btn7 = btn7;
	}

	/**
	 * @param btn8 The btn8 to set.
	 */
	public void setBtn8(Button btn8) {
		this.btn8 = btn8;
	}

	/**
	 * @param btn9 The btn9 to set.
	 */
	public void setBtn9(Button btn9) {
		this.btn9 = btn9;
	}

	/**
	 * @param btnGeteilt The btnGeteilt to set.
	 */
	public void setBtnGeteilt(Button btnGeteilt) {
		this.btnGeteilt = btnGeteilt;
	}

	/**
	 * @param btnMal The btnMal to set.
	 */
	public void setBtnMal(Button btnMal) {
		this.btnMal = btnMal;
	}

	/**
	 * @param btnMinus The btnMinus to set.
	 */
	public void setBtnMinus(Button btnMinus) {
		this.btnMinus = btnMinus;
	}

	/**
	 * @param btnPlus The btnPlus to set.
	 */
	public void setBtnPlus(Button btnPlus) {
		this.btnPlus = btnPlus;
	}

	/**
	 * @param txtgesamtErgebnis The txtgesamtErgebnis to set.
	 */
	public void setTxtgesamtErgebnis(TextField gesamtErgebnis) {
		txtgesamtErgebnis = gesamtErgebnis;
	}

	/**
	 * @param txtterm The txtterm to set.
	 */
	public void setTxtterm(TextField term) {
		txtterm = term;
	}
	public void clearTxtGesamtErgebnis()
	{
		txtgesamtErgebnis.setText("0");
	}

}

Die ganzen Getter und Setter können denke ich minimiert werden! Nur Eclipse macht das ja immer so schön. ;)

Code:
OperatorAction.java

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class OperatorAction implements ActionListener{
	
	private Fenster fenster;
	
	public OperatorAction(Fenster fenster)
	{
		this.fenster = fenster;
	}
	
	public void actionPerformed(ActionEvent ae)
	{
		if(ae.getActionCommand().equals("="))
		{
			Engine.setZahl2(Integer.parseInt(fenster.getTxtgesamtErgebnis().getText()));
			ZahlenAction.clearZahlStr();
			ZahlenAction.resetZahl();
			new Engine(fenster);
		}
		else
		{
			Engine.setOperator(ae.getActionCommand());
			Engine.setZahl1(Integer.parseInt(fenster.getTxtgesamtErgebnis().getText()));
			fenster.clearTxtGesamtErgebnis();
			ZahlenAction.clearZahlStr();
			ZahlenAction.resetZahl();
		}
	}
}

Code:
ZahlenAction.java

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ZahlenAction implements ActionListener{

	private static String zahlStr = "";
	private static int zahlInt;
	private Fenster fenster;
	
	public ZahlenAction(Fenster fenster)
	{
		this.fenster = fenster;
	}
	
	public void actionPerformed(ActionEvent arg0) {
		zahlStr += arg0.getActionCommand();
		fenster.getTxtgesamtErgebnis().setText(zahlStr);
	}
	
	public static void resetZahl(){
		zahlInt = 0;
	}
	
	public static int getZahl(){
		zahlInt = Integer.parseInt(zahlStr);
		return zahlInt;
	}
	public static void clearZahlStr()
	{
		zahlStr = "";
	}

}

Code:
Engine.java

public class Engine {

	private int zahl3;
	private Fenster fenster;
	private static int zahl1;
	private static int zahl2;
	private static char[] operatorChar = new char[1];
	
	public Engine(Fenster fenster)
	{
		this.fenster = fenster;
		switch(operatorChar[0])
		{
			case '+': addieren(); break;
			case '-': subtrahieren(); break;
			case '*': multiplizieren();break;
			case '/': dividieren();

		}
	}
	
	public void addieren()
	{
		zahl3 = zahl1 + zahl2;
		fenster.getTxtgesamtErgebnis().setText(""+zahl3);
	}
	public void subtrahieren()
	{
		zahl3 = zahl1 - zahl2;
		fenster.getTxtgesamtErgebnis().setText(""+zahl3);
	}
	public void multiplizieren()
	{
		zahl3 = zahl1 * zahl2;
		fenster.getTxtgesamtErgebnis().setText(""+zahl3);
	}
	public void dividieren()
	{
		zahl3 = zahl1 / zahl2;
		fenster.getTxtgesamtErgebnis().setText(""+zahl3);
	}
	
	public static void setOperator(String operator){
		operatorChar = operator.toCharArray(); 
	}
	
	public static void setZahl1(int zahl)
	{
		zahl1 = zahl;
	}
	public static void setZahl2(int zahl)
	{
		zahl2 = zahl;
	}
}

Code:
WindowManger.java



import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class WindowManager extends WindowAdapter{

	public void windowClosing(WindowEvent we){
		System.exit(1);
	}
}

Sooo, vlt ein wenig kompliziert, aber hoffe gut verständlich und ordentlich Objektorientiert ^^
Tschööö,
Jens :)
 
Zurück