Schwegelberger
User
-
Registriert
-
Letzter Besuch
Reputationsaktivität
-
Das Sollte doch so sein 😭 ich wolle doch das er einen Stack Overflow hat.
"Oo es hat geklappt aber noch nicht so gut wie ich es wollte" war mein ziel (Lern effekt)
Später wollte ich ihm eine OOP lösung andrehen => wo ich ihn wieder geziel auf sachen aufmerksamm gemacht hätte..
Zum Beispiel Large Objekt Heap wollte ihn damit bisschen auf die eier gehen außerdem so lernt man gut.
Mann macht was sieht ooo das war scheiße und versucht es besser hinzu bekommen.
=> ich hatte gehofft das er von alleine drauf komm und sich mit den Internas aus der .net entwicklung beschäftig und sich mal gedanken über den .NET Garbage Collector (GC) später noch macht.
Ich könnte ihn auch eine Lösung runter rotzten aber da hat er doch auf langer sich nichts von.
-
Das führt irgendwann zu einem Stapelüberlauf (Stack Overflow)
Du kannst jede Rekursion in eine Schleife umwandeln aber nicht jede Schleife in eine Rekursion.
Die 80er haben angerufen und wollen goto zurück haben. Nein, ernsthaft. goto ist eine schlechte wahl. goto sollte man meiden, wie der Teufel das Weihwasser. In Hochsprachen, wie C# nun mal ist, ist die Verwendung von goto unnötig.
-
Ich werde jetzt keinen Code für dich posten, du sollst das schon selbst tippen und verstehen^^
Hier kannst du die simple Angehensweise mal nachvollziehen. Gibt sicher andere Wege, das ist aber relativ einfach Quck & Dirty.
Vermutlich würde ich es nicht in statischen Klassen machen, aber darum gehts grad ja nicht.
-
Mal ganz unabhängig von deinem Code, da hätte ich nämlich hier und da schon was auszusetzen, mal erklärt wie du diese "Dauerschleife" hinbekommst:
Im Einsteigspunkt rufst du eine Methode auf, die du als "Menü" ansehen könntest. Hier forderst du den Benutzer auf Eingaben auf. Dann prüfst du die Eingabe und führst über ne Switch die entsprechende Methode aus (Addieren, Subtrahieren usw.). Statt die Eingaben zu konvertieren, prüfst du im Switch einfach auf den richtigen String, so kannst du auch "off" abfangen und das Programm beenden. Am Ende der jeweiligen Methoden rufst du die Methode für das Menü erneut auf. Vorher nutzt du Console.Clear() um die Konsole zu leeren.
-
Schwegelberger hat auf allesweg in Taschenrechner c# consolewelche konkrete Probleme hast du denn?
Du schweifst hier nämlich auch schon wieder ab!
-
if (art == "plus") { ergebnis = zahl1 + zahl2; Console.WriteLine(ergebnis); }
Vergleich die String
Dafür hast du sie doch oben erstellt
-
Schwegelberger hat auf alex123321 in Taschenrechner c# consoleWarum liest du oben erstmal zwei Zahlen und die Rechenart ein und benutzt das dann nicht weiter?
Benutz doch die Variablen, um zu prüfen welcher If-Block auszuführen ist.
-
Schwegelberger hat auf RipperFox in Taschenrechner c# consoleif (Console.ReadLine() == "plus") Der Nutzer muss also nachdem er z.B.
1 <Enter>
plus <Enter>
2 <Enter>
eingegeben hat nocheinmal
plus <Enter>
eingeben, damit der IF-Block ausgeführt wird. Vermutlich nicht ganz, was du wolltest, oder?
else if (Console.ReadLine() == zahl1 + "minus" + zahl2) Ok, du vergleichst den Rückgabestring von Console.Readline() mit einem aus zahl1, "minus" und zahl2 zusammengesetztem String.
Mit den Zahlen von oben (zahl1 = 1, zahl2 = 2) müsste man hier "1minus2" eingeben, damit in den IF-Block gesprungen wird
Die Programmierung macht genau das, was du geschrieben hast
Evtl. noch mal genau überlegen, welche Schritte nötig sind:
Was muss ich vom Benutzer abfragen, wie lege ich das in Variablen ab, wie muss ich damit weiter verfahren..
Es hilft auch ungemein, wenn das Programm auch mal was ausgibt - z.B. erkennst Du schnell an welcher Stelle das Programm ist wenn zu an die entsprechende Stelle einfügst:
Console.WriteLine("Bitte Zahl1 eingeben");