Huhu
Ersma sry, dass der Titel so wenig aussagekräftig ist... aber da ich nicht weiss wo das Problem liegt kann ich leider keinen besseren liefern. Da ich denke, dass ich irgendwas mit der Implementierung des Interface vergurkt habe hab ich den Titel jetzt ma so gewählt.
Ich habe einen Taschenrechner programmiert. Ich habe dann Klassen wie Addition, Subtraktion, Multiplikation und so angelegt. Diese implementieren alle das Interface Berechnen, das eine einzige Methode entählt.
Hier wird der Event abgefangen und die Methode berechnen aufgerufen, die new Addition() oder new Subtraktion() übergibt.
Hier die Methode public void berechnen(Berechnen b):
Und hier die Klassen, die das Interface implementieren:
Das Problem ist jetzt, dass die Zahlen immer nur addiert werden. Auch wenn der subtraktion-Button geklickt wird werden die 2 Zahlen addiert.
Kann mir jmd sagen wo ich den Fehler gemacht habe?
*Edit:
Hier noch das Interface, falls das jmd braucht:
Kann mir wer verraten wie ich hier das Syntaxhighlighting reinmache? Ich mache es immer mit Code, aber dann gehts nicht und ich finde keine Optionen dazu.
Ersma sry, dass der Titel so wenig aussagekräftig ist... aber da ich nicht weiss wo das Problem liegt kann ich leider keinen besseren liefern. Da ich denke, dass ich irgendwas mit der Implementierung des Interface vergurkt habe hab ich den Titel jetzt ma so gewählt.
Ich habe einen Taschenrechner programmiert. Ich habe dann Klassen wie Addition, Subtraktion, Multiplikation und so angelegt. Diese implementieren alle das Interface Berechnen, das eine einzige Methode entählt.
Hier wird der Event abgefangen und die Methode berechnen aufgerufen, die new Addition() oder new Subtraktion() übergibt.
Code:
@Override
public void actionPerformed(ActionEvent e){
if (vorherigerOperator.equals(addition)){
if(berechnen){
eingegebeneZahl = getEingegebeneZahl();
resultat = berechnen(new Addition());
einAusgabeFeld.setText(""+resultat);
vorangestellterOperator = true;
}
}
else if(vorherigerOperator.equals(subtraktion)){
if(berechnen){
eingegebeneZahl = getEingegebeneZahl();
resultat = berechnen(new Subtraktion());
einAusgabeFeld.setText(""+resultat);
vorangestellterOperator = true;
}
}
Hier die Methode public void berechnen(Berechnen b):
Code:
protected double berechnen(Berechenbar b){
return b.berechnen(resultat, eingegebeneZahl);
}
Und hier die Klassen, die das Interface implementieren:
Code:
lass Addition implements Berechenbar {
public double berechnen(double resultat, double eingegebeneZahl) {
return resultat+eingegebeneZahl;
}
}
class Subtraktion implements Berechenbar {
public double berechnen(double resultat, double eingegebeneZahl){
return resultat-eingegebeneZahl;
}
}
Das Problem ist jetzt, dass die Zahlen immer nur addiert werden. Auch wenn der subtraktion-Button geklickt wird werden die 2 Zahlen addiert.
Kann mir jmd sagen wo ich den Fehler gemacht habe?
*Edit:
Hier noch das Interface, falls das jmd braucht:
Code:
public interface Berechenbar {
public double berechnen(double a, double b);
}
Kann mir wer verraten wie ich hier das Syntaxhighlighting reinmache? Ich mache es immer mit Code, aber dann gehts nicht und ich finde keine Optionen dazu.
Zuletzt bearbeitet: