Hey ich habe ein Problem mit meinem Taschenrechner!
Ich habe eine methode rechnen hinzugefügt und auch mit der Gleich taste verknüpft jedoch funktioniert es nicht! Hier mal der Quelltext, allerdings ohne UI:
Editor: eclipse SDK
Ich hoffe ihr könnt mir helfen
Ich habe eine methode rechnen hinzugefügt und auch mit der Gleich taste verknüpft jedoch funktioniert es nicht! Hier mal der Quelltext, allerdings ohne UI:
Editor: eclipse SDK
Java:
import java.awt.event.*;
import java.util.*;
import java.lang.NumberFormatException;
public class TaschenrechnerModell
{
private Stack operatorenStapel;
private Stack operandenStapel;
private TaschenrechnerUI taschenrechner;
private int wertAnzeige;
/**
* Constructor for objects of class TaschenrechnerModell
*/
public TaschenrechnerModell()
{
// Initialisierung zweier Stapel für die Operatoren und die Operanden.
operatorenStapel = new Stack();
operandenStapel = new Stack();
//Setzt die wert Anzeige auf Null.
wertAnzeige = 0;
//Initialisierung der TaschenrechnerUI.
taschenrechner = new TaschenrechnerUI();
//Initialisierung der einzelnen Tasten.
taschenrechner.eins.addActionListener (new ButtonKontrolleEins());
taschenrechner.zwei.addActionListener (new ButtonKontrolleEins());
taschenrechner.drei.addActionListener (new ButtonKontrolleEins());
taschenrechner.vier.addActionListener (new ButtonKontrolleEins());
taschenrechner.fuenf.addActionListener (new ButtonKontrolleEins());
taschenrechner.sechs.addActionListener (new ButtonKontrolleEins());
taschenrechner.sieben.addActionListener (new ButtonKontrolleEins());
taschenrechner.acht.addActionListener (new ButtonKontrolleEins());
taschenrechner.neun.addActionListener (new ButtonKontrolleEins());
taschenrechner.nulltaste.addActionListener (new ButtonKontrolleEins());
taschenrechner.mC.addActionListener (new ButtonKontrolleEins());
taschenrechner.mPlus.addActionListener (new ButtonKontrolleEins());
taschenrechner.mMinus.addActionListener (new ButtonKontrolleEins());
taschenrechner.mR.addActionListener (new ButtonKontrolleEins());
taschenrechner.c.addActionListener (new ButtonKontrolleEins());
taschenrechner.plusMinus.addActionListener (new ButtonKontrolleEins());
taschenrechner.durch.addActionListener (new ButtonKontrolleEins());
taschenrechner.x.addActionListener (new ButtonKontrolleEins());
taschenrechner.minus.addActionListener (new ButtonKontrolleEins());
taschenrechner.plus.addActionListener (new ButtonKontrolleEins());
taschenrechner.komma.addActionListener (new ButtonKontrolleEins());
taschenrechner.gleich.addActionListener (new ButtonKontrolleEins());
}
// Die innere Klasse ButtonKontrolleEins fügt den einzelnen Tasten ihre Funktion zu.
class ButtonKontrolleEins implements ActionListener{
//Methode um die Funktionen hinzuzufügen.
public void actionPerformed (ActionEvent ae){
String alleButton= ae.getActionCommand();
try{
//Überprüft ob die Anzeige auf Null steht und setzt sie dann auf die entsprechende Zahl.
Integer.parseInt(alleButton);
if (taschenrechner.anzeige.getText().equals("0")){
taschenrechner.anzeige.setText("");
taschenrechner.anzeige.setText(taschenrechner.anzeige.getText()+alleButton);
}
//Wenn ein Operant angeklickt wird, wird die Anzeige erst auf leer gesetzt und dann wird der Operant angezeigt.
else if (taschenrechner.anzeige.getText().equals("/") || taschenrechner.anzeige.getText().equals("x") || taschenrechner.anzeige.getText().equals("+") || taschenrechner.anzeige.getText().equals("-")) {
taschenrechner.anzeige.setText("");
taschenrechner.anzeige.setText(alleButton);
}
//Wenn eine normale Zahl gedrückt wird, wird diese auf der Anzeige angezeigt.
else {
taschenrechner.anzeige.setText(taschenrechner.anzeige.getText()+alleButton);
}
}
//Fügt den Operatoren und sonstigen Buttons ihre Funktion hinzu.
catch(NumberFormatException e){
if (alleButton.equals("C")){
taschenrechner.anzeige.setText("0");
}
if (alleButton.equals(",")){
taschenrechner.anzeige.setText(",");
}
else if (alleButton.equals("/") ){
operandenStapel.push(taschenrechner.anzeige.getText());
taschenrechner.anzeige.setText("/");
operatorenStapel.push(taschenrechner.anzeige.getText());
prüfe(alleButton);
}
else if (alleButton.equals("x") ){
operandenStapel.push(taschenrechner.anzeige.getText());
taschenrechner.anzeige.setText("x");
operatorenStapel.push(taschenrechner.anzeige.getText());
prüfe(alleButton);
}
else if (alleButton.equals("+") ){
operandenStapel.push(taschenrechner.anzeige.getText());
taschenrechner.anzeige.setText("+");
operatorenStapel.push(taschenrechner.anzeige.getText());
prüfe(alleButton);
}
else if (alleButton.equals("-") ){
operandenStapel.push(taschenrechner.anzeige.getText());
taschenrechner.anzeige.setText("-");
operatorenStapel.push(taschenrechner.anzeige.getText());
prüfe(alleButton);
}
else if(alleButton.equals("=")){
operandenStapel.push(taschenrechner.anzeige.getText());
rechnen(); }
}
}
}
private void prüfe(String operator){
String operator1 = operator;
String operator2 = (String)operatorenStapel.peek();
if(operatorenStapel.isEmpty()) operatorenStapel.push(operator1);
else if(operator1.equals("/") || operator1.equals("x") && operator2.equals("+") || operator2.equals("-")){
operatorenStapel.push(operator1);
}
else if(operator1.equals(operator2)){
rechnen();
prüfe(operator1);
}
else if(operator2.equals("/") || operator2.equals("x") && operator1.equals("+") || operator1.equals("-")){
rechnen();
prüfe(operator1);
}
}
private void rechnen(){
int operand1;
int operand2;
String operator;
while(!operandenStapel.isEmpty()){
operand2= (Integer) operandenStapel.peek();
operandenStapel.pop();
operand1= (Integer) operandenStapel.peek();
operandenStapel.pop();
operator= (String) operatorenStapel.peek();
operatorenStapel.pop();
if(operator.equals("+")){
operandenStapel.push(operand1+operand2);
}
else if(operator.equals("-")){
operandenStapel.push(operand1-operand2);
}
else if(operator.equals("/")){
operandenStapel.push(operand1/operand2);
}
else if(operator.equals("x")){
operandenStapel.push(operand1*operand2);
}
rechnen();
}
taschenrechner.anzeige.setText((String) operandenStapel.peek());
}
// Main-Methode (wird zuerst ausgeführt)
public static void main(String[] args) {
new TaschenrechnerModell();
}
}
Ich hoffe ihr könnt mir helfen