Entwickler-Ecke
C# - Die Sprache - Fragen, Tipps und Optimierungen zu Währungsrechner
Disastro - Do 12.02.09 13:43
Titel: Fragen, Tipps und Optimierungen zu Währungsrechner
Hi all,
Ich habe mir ein Buch gekauft und wende gewiesse Übungen gleich an. Ich habe nun mit einem
simplen und kleinen Währungsrechner begonnen, der die Möglichkeit bieten solle CHF in Euro und Dollar umzurechnen.
Der Code sieht folgendermassen aus:
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:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Umrechner { class Program { static void Main(string[] args) { Console.WriteLine("Wählen Sie eine Option\n\n1.Euro in CHF\n2.Dollar in CHF\n"); string Optiongo = Console.ReadLine(); int Option = System.Convert.ToInt16(Optiongo); switch(Option) { case 1: Console.WriteLine("Geben Sie den Betrag in EUR ein"); string BetragEUR;
BetragEUR = Console.ReadLine(); double BetragEURCHF = System.Convert.ToDouble(BetragEUR)*1.50; Console.WriteLine("Das ergibt " +BetragEURCHF+ " Schweizer Franken"); Console.ReadLine(); break; case 2: Console.WriteLine("Geben Sie den Betrag in Dollar ein"); string BetragDollar; BetragDollar = Console.ReadLine(); double BetragDollarCHF = System.Convert.ToDouble(BetragDollar) * 1.15; Console.WriteLine("Das ergibt " + BetragDollarCHF + " Schweizer Franken"); Console.ReadLine(); break; } } } } |
Nun meine Fragen:
1. Wie kann ich die Möglichkeit bieten, in den einzelnen Cases zurück zum Menü zu kehren?
2. Wie könnte ich mein Code optmieren und was zum Beispiel besser machen? Ich bin irgendwie der Meinung, dass ich das convertieren der Variabeln in diesem Skript nicht zwingend benötige.
3. Ein Ziel wäre es, die Wechselkurse direkt über das Internet zu aktualisieren. Ist das bei Konsolenanwendungen auch machbar, oder wäre hier die Variante Windows Form doch geeigneter? Wie realisiere ich das? Ich habe eine leichte Ahnung von PHP und vermute, dass ich dies via XML realisieren kann.
Vielen Dank im Voraus für eure Antworten.
Gruss
Disastro
Moderiert von
Kha: Code- durch C#-Tags ersetzt
Console.Beep() - Do 12.02.09 13:55
Es wäre angebracht ,dass du die Umberechnungen als extra methoden schreibst und dann einfach im case die methode aufrufst (sieht ordendlicher aus und du findest dich besser im Code zurecht).
C#-Quelltext
1: 2: 3: 4: 5:
| ... case 1: Umrechnen_in_Franken(); break; ... |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| static void Umrechnen_in_Franken() { Console.WriteLine("Geben Sie den Betrag in EUR ein"); string BetragEUR; BetragEUR = Console.ReadLine(); double BetragEURCHF = System.Convert.ToDouble(BetragEUR)*1.50; Console.WriteLine("Das ergibt " +BetragEURCHF+ " Schweizer Franken"); Console.ReadLine(); } |
zu frage 1: mach ne do-while schleife rum und frage einfach immer ab ob der user beenden will.
Console.Beep() - Do 12.02.09 14:23
zu 2. ja, du kannst es etwas vereinfachen
statt:
C#-Quelltext
1: 2:
| string Optiongo = Console.ReadLine(); int Option = System.Convert.ToInt16(Optiongo); |
schreib:
C#-Quelltext
1:
| int Option=Convert.ToInt32(Console.ReadLine()); |
Schon hast du eine Zeile gespart^^
Und bei der Umrechnung solltest du selbst gucken was du da vereinfachen kannst.
Vorsicht: du solltest noch try/catch einbauen sonst schmeist das Programm den Benutzer bei einer Ausnahme raus
siehe
http://openbook.galileocomputing.de/csharp/kap04.htm für Infos
JüTho - Do 12.02.09 15:33
Console.Beep() hat folgendes geschrieben : |
| Vorsicht: du solltest noch try/catch einbauen sonst schmeist das Programm den Benutzer bei einer Ausnahme raus |
Mein Standardvorschlag ist, dass anstelle von Convert.ToXxx möglichst
Parse, ParseExact, TryParse, TryParseExact verwendet werden sollte. Das erspart die Prüfung nach Exceptions:
C#-Quelltext
1: 2:
| int Option = 0; if (int.TryParse(Console.ReadLine(), out Option)) {...} |
Ansonsten habe ich keine Einwände gegen Beeps Vorschläge. Eher würde ich empfehlen, das Ganze als WinForms-Anwendung zu erstellen, was ja auch für die praktische Nutzung viel schöner wäre.
Gruß Jürgen
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!