0 Daumen
80 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

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community