0 Daumen
1,6k 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;
  }
 

}
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;
}
}

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

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community