Autor |
Beitrag |
storestore
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Do 01.09.11 23:18
Hallo,
neues Thema neues Glück!
Also,
ich will nun abfragen das wenn das was die Console rückgibt ein Buchstabe ist das dan Ein Text wie z.B Console.WriteLine("Bitte nur zahlen eingeben!!!");
Naja nur das Problem ist, mit was mache ich das am besten?
Mit einer if anweisung oder mit einer switch-case anweisung?
Ich habe es mal mit einer switch-case anweisung versucht
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| string text= Console.ReadLine(); switch(text) { case "A": Console.WriteLine("Bitte nur zahlen eingeben!!!") break; case "B": Console.WriteLine("Bitte nur zahlen eingeben!!!") break; case "C": Console.WriteLine("Bitte nur zahlen eingeben!!!") break; } |
Wenn ich jetzt z.B. A eingebe dann gibt er mir dieses: "Bitte nur zahlen eingeben!!!" aus.
Aber wenn ich jetzt ABC eingebe dann stürzt er ab. Aber wie kann ich das lösen? Ich kann ja nicht alle Wörter der Welt in meine switch-case anweisung einbauen?!
Mfg Storestore
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 01.09.11 23:32
storestore hat folgendes geschrieben : | Halloich will nun abfragen das wenn das was die Console rückgibt ein Buchstabe ist das dan Ein Text wie z.B Console.WriteLine("Bitte nur zahlen eingeben!!!"); |
Seltsam: Dem Benutzer sagst du, dass nur Zahlen eingegeben werden dürfen, dem Programm aber, dass keine Buchstaben erlaubt sind. Was trifft es wohl eher?
storestore hat folgendes geschrieben : | wenn ich jetzt ABC eingebe dann stürzt er ab. |
Wenn du das Programm aus Visual Studio heraus aufrufst, stürzt es nicht ab. Es zeigt dir eine Exception angezeigt, beim Aufruf der int.Parse-Methode, oder? Und jetzt such mal nach einer Methode, die keine Exception wirft, wenn sie falsche Eingaben bekommt, sondern dir den Fehler anders mitteilt. Ist gar nicht so schwer.
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Fr 02.09.11 00:46
Oder ich versuch es mit try and catch!
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Fr 02.09.11 08:22
Schau lieber mal ob dir int nicht noch andere Funktionen bereitstellt. Parse hast du ja schon gefunden aber es gibt da bessere Varianten die auch mit falschen Eingaben umgehen können.
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Fr 02.09.11 11:08
bakachan hat folgendes geschrieben : | Schau lieber mal ob dir int nicht noch andere Funktionen bereitstellt. Parse hast du ja schon gefunden aber es gibt da bessere Varianten die auch mit falschen Eingaben umgehen können. |
Ok, was wäre den an try and catch so schlimm? Das ist doch eig. genau das was ich möchte.
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Fr 02.09.11 11:16
if(int.TryParse(source,target)==true)
//erfolgreich
else
//nicht erfolgreich
Für diesen Beitrag haben gedankt: storestore
|
|
pdelvo
      
Beiträge: 55
Erhaltene Danke: 11
|
Verfasst: Fr 02.09.11 11:19
Für diesen Beitrag haben gedankt: storestore
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Fr 02.09.11 11:21
sorry das mit dem out hat ich auch gerade gemerkt  und das true schreib ich immer mit hin (klar ist es unnötig aber besser lesbar)
Für diesen Beitrag haben gedankt: storestore
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Fr 02.09.11 11:27
Ok, danke klappt super. Denoch würde ich gerne wissen wozu eig. try and catch dient!
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
pdelvo
      
Beiträge: 55
Erhaltene Danke: 11
|
Verfasst: Fr 02.09.11 11:32
storestore hat folgendes geschrieben : | Ok, danke klappt super. Denoch würde ich gerne wissen wozu eig. try and catch dient! |
try-catch dient zum Abfangen von Exceptions(Ausnahmen). Wie der Name schon sagt sind Ausnahmen Dinge, die nicht zum festen Programmablauf gehören. Wenn es geht sollte man daher versuchen Eingaben vorher zu prüfen, und nicht die Exception zum prüfen von Eingaben missbrauchen.
|
|
bakachan
      
Beiträge: 503
Erhaltene Danke: 34
W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
|
Verfasst: Fr 02.09.11 11:33
storestore hat folgendes geschrieben : | Ok, was wäre den an try and catch so schlimm? Das ist doch eig. genau das was ich möchte. |
Nehmen wir mal ein Beispiel:
Du willst mit einem Auto fahren weisst aber nicht ob die Bremsen funktionieren.
Die TryParse Variante wäre zu probieren ob die Bremsen greifen, wenn nicht weisst du es vorher.
Die Try Catch Variante heisst du fährst einfach los und merkst während der Fahrt das die Bremsen nicht funktionieren also fährst du gegen einen Baum. Aber macht ja nichts, die Airbags (Catch) haben dich ja gerettet.
Try Catch ist für Sachen die du nicht kontrollieren kannst. Nehmen wir zum Beispiel mal an du willst eine Datei im Netzwerk lesen aber in dem Moment zieht der andere das LAN-Kabel raus. Anstatt nun das ganze Programm Abstürzt kannst du mit dem Catch den Fehler auswerten/behandeln.
Oder für Fehlerberichte:
Man kann im äußersten Bereich der Anwendung ein TryCatch verwenden um Fehlerberichte zu erstellen.
Quasi wenn irgendein unerwarteter Fehler auftritt wird es wenigstens noch protokolliert und kann an den Entwickler gesendet werden.
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Fr 02.09.11 13:01
Naja, da das Prgramm das ich programmierer zu Übungszwecken dient will ich es auch mit try und catch versuchen
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
dark-destination1988
      
Beiträge: 178
Erhaltene Danke: 21
|
Verfasst: Fr 02.09.11 13:14
viel spaß beim gegen baum fahren 
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 02.09.11 13:18
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Fr 02.09.11 13:26
Hallo,
ja natürlich werde ich die Ratschläge im Kopf behalten. Da es aber wirkch nur zu übungszwecken dient würde ich es mal gernen mit try und catch versuchen
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Fr 02.09.11 21:27
Hier ist mal der neue Code:
Sorry für den dopple post aber sonst kommt man durcheinander *Rausreden*
Da ich es ja mit try and catch versuchen wollte bliebe mir eig. nix anders möglich als alles in eine Methode abzuwickeln, oder? Wenn ich in catch einfach wieder eine Schleife einbinde, bringt mir das nix. Wenn mir der user wieder ein Buchstabe eingibt dann habe ich den gleichen salat wie in der aller ersten Frage beschrieben. (Aber ein Salat ohne Dressing, frischen Gemüse und saftigen geilen Chrimps *Hmmmm*)
mfg storestore
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: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication1 { class Program {
static void Main(string[] args) { Methode(); } static void Methode() {
try { string wiederholen; string darfnichtsein;
do {
Console.WriteLine("Hallo, geben sie bitte ihr aktuelles \"Vermögen\" ein!"); darfnichtsein = Console.ReadLine(); double geld = Convert.ToDouble(darfnichtsein);
Console.WriteLine("Wollen sie was drauf zahlen oder abziehen?"); Console.WriteLine("D= draufzahlen, A=Abziehen!"); string text = Console.ReadLine(); if (text == "D" || text == "d") { Console.WriteLine("Wie viel wollen sie drauf zahlen?"); double draufzahlen = Convert.ToDouble(Console.ReadLine()); geld = geld + draufzahlen; Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro"); Console.ReadLine(); } else if (text == "A" || text == "a") { Console.WriteLine("Wie viel wollen sie abheben?"); double abheben = Convert.ToDouble(Console.ReadLine()); geld = geld - abheben; Console.WriteLine("Ihr aktuelles Guthaben= " + geld + " Euro"); Console.ReadLine(); } else { Console.WriteLine("Bitt nur zwischen 'A'oder 'a' und 'D'oder'd' auswählen"); Console.ReadLine(); } Console.WriteLine("Nochmal? Dan drücker 'N' oder'n'"); Console.WriteLine("Oder lieber raus ins Freie? ;) Dann einfach exit eingeben"); wiederholen = Console.ReadLine();
Console.Clear();
} while (wiederholen == "N" || wiederholen == "n"); }
catch { Console.WriteLine("Bitte Nur zahlen angeben" + " nächster versuch *Augen roll !!!* Bitte Enter drücken "); Console.ReadLine(); Console.Clear(); Methode();
} } } } |
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 03.09.11 12:32
Schon wieder eine Rekursion, und jetzt auch noch parallel zur Schleife. Du bist einfach unverbesserlich... 
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Sa 03.09.11 12:36
Hi, ja aber wie soll ich das den sonst machen wenn ich try and catch verwenden will? Ich kann es ja wieder mit einer schleife machen aber wenn ich das zweite mal auch wieder Buchstaben eingebe dann stürtzt er ab! Aber alle machen viele Sachen mit Methoden wieso gibt es bei mir sofort eine rekursion?
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Sa 03.09.11 13:14
Irgendwie wird hier am selben Programm in zwei unterschiedlichen Forenthreads gebastelt und die Erkenntnisse aus dem einen Thread gelangen nicht in den anderen.
Vgl. hier www.c-sharp-forum.de....php?p=649488#649488 - da ist das mit der Rekursion bereits gelöst.
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
storestore 
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: So 04.09.11 10:06
Nene! Das eine war nur für die Methode. Das hier ist der versuch mit Try und catch! Aber ohne eine Methode bekomme ich das nicht hin!
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
|
|