Frage von Benyou02, 49

Wieso geht er nicht in die Schleife von meinem Java Taschenrechner?

Ich mache im Moment einen Taschenrechner in Java, aber er soll jetzt Rechnungen mit mehreren Zahlen (z.b. 1+2+3, 5+8*4) rechnen können. Ich komme jetzt aus meiner Schleife nicht mehr raus. Habt ihr einen Tipp oder eine Lösung? Hier der Code : http://pastebin.com/X7FP1XTp Danke im Vorraus

Expertenantwort
von KnusperPudding, Community-Experte für Java, 13

Welche Schleife meinst du? Du hast zwei Schleifen.

Davon abgesehen findet in deinem Code ein gigantisches Chaos statt. Wieso ist die Variable Num als statische Klassen-Variable deklariert? Dasselbe gilt für fSum. 

Die lokalen Variablen: m und Zahl werden gar nicht verwendet.

Variablen schreibt man immer klein, bis auf Konstanten.

Deine Schleifen werden beide durchlaufen (Sobald du eine Eingabe tätigst). 

Allerdings ist in deiner Methode berechnen sehr viel falsch, wodurch du natürlich auch mit einem falschen Ergebnis rechnest, dass ich gar nicht weiß wo ich anfangen soll.

Du machst es dir durch dein Chaos selbst nur noch viel schwerer......

private static double berechnen(double Sum, ArrayList list) {

wozu gibst du der Methode einen Parameter sum? das kannst du dir sparen.

Genauso wie das hier:

String Zahl = "0";

du benötigst eine lokale double Variable  ergebnis. auf die du dich beziehst.

case "+":
  String ersteZahl = list.get(i - 1);
  Sum = fSum;
  Sum = Sum + Double.parseDouble(ersteZahl) + Double.parseDouble(list.get(i + 1));
  fSum = Sum;
  break;

Abgesehen von dem Mist mit den statischen Variablen, berechnest du im Falle von plus irgendwann zahlen doppelt.

Bei: 1 + 2 + 3 rechnest du:

Sum = Sum + Zahl1 + Zahl2. D.h.: 

Summe = 0 + 1 + 2 = 3

Beim zweiten mal rechnest du dann:

Summe = 3 + 2 + 3 = 8

Man das Gefühl als hätte dir überhaupt noch niemand etwas zu dem Thema erzählt und du sollst dir das im Alleingang mit Hilfe von google aneignen.

Ich würde das alles theoretisch noch gerne genauer erklären, aber dazu bräuchte ich deinen Wissensstand. 

Deine Annahme, dass die Schleife: in der Methode "parsen"  eine Endlosschleife ist, ist falsch. das Funktioniert korrekt.

Antwort
von Graphitiboy, 21

Hast du die Möglichkeit deinen Code zu Debuggen? Führe einzelne Steps aus und schau woran es denn genau liegen könnte, ggf. Ungereimtheiten beachten.

Bin noch in der Ausbildung und im ersten Jahr.. und ich kann bis jetzt nur C# so lala, Java gar nicht, jedoch fällt mir nichts ungewöhnliches oder falsches an deinem Code auf (hab nicht viel mehr als überflogen).

Antwort
von Odorwyn, 17

Wofür ist bitte der String "Num" als Parameter?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten