0 Daumen
6,2k Aufrufe

Frage:

Moin,

ich muss einen Taschenrechner programmieren, der bestimmte Eigenschaften besitzt. Da ich jedoch ein kompletter Informatik noob bin, fällt mir die Aufgabe unglaublich schwer.

Der Taschenrechner:

-fängt mit dem Anfangswert 0.0 an und besitzt Plus, Minus, Mal und Geteilt.

-nutzt ein Zwischenergebnis für die 1. Zahl und nimmt einen Parameter für die nächste. (Ergebnis wird gespeichert und rausgegeben)

-das aktuelle Zwischenergebnis soll durch jedes Exemplar aufgerufen werden können (sondierende Methode)

-das Zwischenergebnis kann durch bspw. lösche auf 0.0 zurückgesetzt werden

-Wenn man mit dem Parameter 0.0 teilt, dann soll nichts passieren

-Zuletzt soll eine öffentliche Konstante PI mit Datentyp double angeboten werden, die den Wert 3.14 hat.


Code:

public class Taschenrechner {
  private double zahl1 = 20;
  private double zahl2 = 10;
  private double ergebnis;
 
  public double add ()
  {
      ergebnis = zahl1 + zahl2;
      return ergebnis;
  }
  public double sub ()
  {
      ergebnis = zahl1 - zahl2;
      return ergebnis;
  }
  public double mult ()
  {
      ergebnis = zahl1 * zahl2;
      return ergebnis;
  }
  public double div ()
  {
      ergebnis = zahl1 / zahl2;
      return ergebnis;
  }
  public double gibZwischenergebnis ()
  {
      return ergebnis;
  }
  public double löscheZwischenergebnis ()
  {
      gibZwischenergebnis = 0.0;
  }
  public double Pi ()
  {
      Pi = 3.14;
      return ergebnis;
  }
 

}
Avatar von

1 Antwort

+1 Daumen

Dein Code sieht so weit schon einmal ganz gut aus.

Du hast bei den Methoden zur Berechnung nicht beachtet, dass diese einen Parameter, die 2. Zahl, übergeben bekommen sollen und für die 1.Zahl das bisherige Zwischenergebnis verwendet werden soll.

Daher würde ich vorschlagen, die Variablen zahl1 und zahl2 zu streichen und dafür eine Variable zwischenergebnis zu deklarieren die am Anfang mit 0.0 initialisiert ist.

private double zwischenergebnis = 0.0;
Und die Methoden für die Rechnungen entsprechend anzupassen:

 public double add(double zahl2) {
zwischenergebnis = zwischenergebnis + zahl2;
return zwischenergebnis;
}


In der Methode löscheZwischenergebnis hat sich ein Fehler eingeschlichen, durch diesen kann die Klasse gar nicht kompilieren, es müsste lauten:

public double löscheZwischenergebnis () {
ergebnis = 0.0;
}

Vorher hast du einen Methodennamen aufgerufen und versucht diesem einen Wert zuzuweisen, das funktioniert nicht.


Konstanten werden in der Regel als Variablen mit einem static definiert:

public static double PI = 3.14; // Konstante PI

Diese kann jetzt mit:

Taschenrechner.PI
abgerufen werden.


In der div Methode fehlt noch die Bedingung, wenn Zahl2 = 0.0 ist nichts passieren soll, das kannst du mit einer if-Abfrage überprüfen:

 public double div(double zahl2) {
// nur teilen, wenn zahl2 nicht 0.0 ist
if (zahl2 != 0.0) {
zwischenergebnis = zwischenergebnis / zahl2;
}

return zwischenergebnis;
}
Durch die if-Abfrage wird die Rechnung nun nur ausgeführt, wenn der Parameter zahl2 nicht 0.0 ist, sonst wird das Zwischenergebnis ohne Veränderung zurückgegeben.


Zusammenfassend würde ich also folgendes vorschlagen:

public class Taschenrechner {
private double zwischenergebnis = 0.0; // Zwischenergebnis am Anfang = 0.0
public static double PI = 3.14; // Konstante PI

public double add(double zahl2) {
zwischenergebnis = zwischenergebnis + zahl2;
return zwischenergebnis;
}

public double sub(double zahl2) {
zwischenergebnis = zwischenergebnis - zahl2;
return zwischenergebnis;
}

public double mult(double zahl2) {
zwischenergebnis = zwischenergebnis * zahl2;
return zwischenergebnis;
}

public double div(double zahl2) {
// nur teilen, wenn zahl2 nicht 0.0 ist
if (zahl2 != 0.0) {
zwischenergebnis = zwischenergebnis / zahl2;
}

return zwischenergebnis;
}

public double gibZwischenergebnis() {
return zwischenergebnis;
}

public void löscheZwischenergebnis() {
zwischenergebnis = 0.0;
}
}

Avatar von

Klappt halt irgendwie immer noch nicht

Was genau klappt nicht?

Test:

 Taschenrechner taschenrechner = new Taschenrechner();
System.out.println(taschenrechner.add(5));
System.out.println(taschenrechner.sub(5));
System.out.println(taschenrechner.add(1));
System.out.println(taschenrechner.mult(10));
System.out.println(taschenrechner.div(0.0));
System.out.println(taschenrechner.div(2.0));
taschenrechner.löscheZwischenergebnis();
System.out.println(taschenrechner.gibZwischenergebnis());
System.out.println(taschenrechner.PI);
Ausgabe:

5.0
0.0
1.0
10.0
10.0
5.0
0.0
3.14

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community