Entwickler-Ecke
C# - Die Sprache - Problem: Schleife bei Taschenrechner als Konsolenanwendung
Mama08 - Sa 15.11.08 14:35
Titel: Problem: Schleife bei Taschenrechner als Konsolenanwendung
Hilfe,
bin wiedereinsteiger. Hatte ein Semester lang C# in der Fachhochschule und versuche grad wieder einzusteigen.
Will einen Taschenrechner programmieren und bis jetzt funktioniert alles. Hab ein Hauptprogramm mit verschiedenen Cases (add, sub, div und multi) und die jeweiligen Methoden sind in klassen (also add is eine klasse und der rest in einer anderen) Bis jetzt funktioniert alles (hab bei div auch eine try/catch anweisung für divbyzero)
Aber leider kann ich immer nur eine anweisung/rechnung durchführen...
schon bei der ersten abfrage (drücke 1. für add, 2. für sub...) kann ich nur einmal auswählen, d.h. wenn ich mich einmal vertippe, dann schreibt er "falsche eingabe" (mein default-wert) und dann kann ich noch einmal was eingeben und dann beendet er...
lange rede kurzer sinn:
wie programmier ich das ganze jetzt sinnvoll in eine schleife rein, also dass ich z.b. nach jeder rechnung wieder ins hauptmenü komme oder solange 2 zahlen addieren kann, bis ich z.B. x drücke oder sowas?!
Sorry für's viele blabla, hoffe es is halbwegs verstädnlich
danke schon mal, lg
JüTho - Sa 15.11.08 14:50
Hallo und :welcome:
bitte ändere zunächst den Titel: Du kannst das Problem etwas genauer ankündigen, z.B. "Problem Schleife bei Taschenrechner als Konsolenanwendung". Man sollte gleich auf die eigentliche Frage hingewiesen werden.
Dann ist es wohl eher Quatsch, die einzelnen Methoden in verschiedene Klassen zu setzen. Wenn Du die Berechnung schon in eine eigene Klasse auslagern willst, dann wäre es eher eine Klasse Calculation mit Eingangs- und Ausgangswerten und allen Berechnungen.
Eigentlich ist auch das überdimensioniert, weil nach dem Ergebnis einer Berechnung diese Rechnung nicht mehr von Bedeutung ist, also aufgelöst werden kann; es handelt sich doch maximal um (bei Grundrechenarten) vier Methoden - auch die Math-Klasse benutzt ausschließlich statische Methoden (und ist selbst ebenfalls static).
Zum Hauptproblem kann ich gar nichts sagen: Du solltest den betreffenden Code zeigen, damit uns klar wird, wie Du die Schleife steuern wolltest, und wir die Problemstelle finden können.
Gruß Jürgen
Mama08 - Sa 15.11.08 14:58
Sorry, wg. Titel. Wollte eh noch was dazuschreiben-hab aber dann vergessen. Es geht ja hauptsächlich um's programmieren und ausprobieren (darum auch in extra-klasse) damit ich wieder rein komm..
Programm:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| class Program { static void Main(string[] args) { Console.WriteLine("Herzlich Willkommen!"); Console.WriteLine("Das ist ein Taschenrechner!Drücken Sie: "); Console.WriteLine("1 für Addition"); Console.WriteLine("2 für Subtraktion"); Console.WriteLine("3 für Division"); Console.WriteLine("4 für Multiplikation");
#region SWITCH
int auswahl = Convert.ToInt32(Console.ReadLine());
switch (auswahl) { case 1: Console.WriteLine("Addition"); Addition Plusrechnung = new Addition(); Plusrechnung.Add(); break; case 2: Console.WriteLine("Subtraktion"); subdivmulti sub = new subdivmulti(); sub.subtraktion(); break; case 3: Console.WriteLine("Division"); subdivmulti div = new subdivmulti(); div.division(); break;
case 4: Console.WriteLine("Multiplikation"); subdivmulti multi = new subdivmulti(); multi.mulitiplikation(); break; default: Console.WriteLine("Falsche Eingabe"); break; } #endregion
Console.ReadLine();
} |
Brauchst du die 2 Klassen auch???
Moderiert von
UGrohne: C#-Tags hinzugefügt.
Kha - Sa 15.11.08 16:51
Dass du eine Schleife brauchst, hast du ja schon erkannt. Der Ablauf sollte dann doch etwa so aussehen:
Quelltext
1: 2: 3:
| Solange kein Abbruch: Menü anzeigen Gewählte Rechenart ausführen |
Und noch ein Hinweis mehr: Die obige Schleife könntest du auch so umschreiben:
Quelltext
1: 2: 3: 4: 5: 6:
| Wiederhole: Menü anzeigen Falls "Abbruch" gewählt Methode verlassen Sonst Rechnen |
JüTho - Sa 15.11.08 17:18
Sebastians Vorschlag möchte ich so ergänzen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Wiederhole: Menü anzeigen Abfrage nach Operator oder Abbruch Falls "Abbruch" gewählt Methode verlassen Sonst erste Zahl abfragen zweite Zahl abfragen Rechnen |
Damit und mit Deinem anderen Code halte ich das Verfahren mit weiteren Klassen in der Tat für abwegig. An der Stelle "Rechnen" kommt die switch-Anweisung und dazu nur jeweils eine einzige Methode; wozu und wie soll das in zwei Klassen ausgelagert werden? Und warum willst Du ausgerechnet Add sowie Sub+Div+Multi zusammenfassen und nicht wenigstens Punkt- und Strichrechnung?
Wenn es Dir wirklich um das Zusammenspiel mehrerer Klassen geht, dann such Dir ein besser geeignetes Projekt (im Forum "Projekte" findest Du sicher viele Anregungen). Und was meinst Du mit der Frage "Brauchst du die 2 Klassen auch???" Du benutzt drei Klassen, nicht zwei; wenn die Frage an mich gerichtet war: nein, ich brauche nur die Klasse Program.
Ergänzend möchte ich noch auf Folgendes hinweisen: Statt Convert.ToInt32 sollten besser
Parse, ParseExact, TryParse, TryParseExact der
int-Klasse verwendet werden. Statt Console.ReadLine gibt es auch
Console.ReadKey.
Gruß Jürgen
Mama08 - Sa 22.11.08 21:38
vielen dank (auch an Sebastian)
sorry, dass ich solange ned geschrieben hab, aber dachte, ich hab keine aw bekommen (weil das Mail irgendwie im Spam gelandet is...)
Werd eure tipps mal umsetzen...
Danke und vielleicht bis bald (spät. wenn ich wieder ned weiterkomm ;-))
lg Carina
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!