homeroma
Goto Top

Fehler bei if (Csharp)

Hallo zusammen,
ich hab mal wieder ein Blackout bei C#. Auch wenn ich das Richtige eingebe, springt es auf das Letzte else. Dabei sagt Es sogar noch ,das das, was Ich eingegeben habe, richtig ist. Danke im vorraus!
wort:
Console.WriteLine("unwichtig");  
                            Console.WriteLine("");  
                            var path1 = @"C:\Users\ich\Documents\Visual Studio 2015\Projects\afb\afb\aussage1\aussage" + nummer + ".txt";  
                            StreamReader reader1 = new StreamReader(path1);
                            var leser = reader1.ReadToEnd();
                            reader1.Close();
                            Console.WriteLine(leser);
                            antwort = Console.ReadLine();
                            var path3 = @"C:\Users\ich\Documents\Visual Studio 2015\Projects\afb\afb\aussage2\2aussage" + nummer + ".txt";  
                            StreamReader reader2 = new StreamReader(path3);
                            var leser2 = reader2.ReadToEnd();
                            reader2.Close();
                            if (antwort == leser2)
                            {
                                Console.WriteLine("richtig!");  
                                Thread.Sleep(500);
                                Console.Clear();
                                name1 = name1 + 1;
                                goto wort;
                            }
                            else
                            {
                                Console.WriteLine("Falsche Antwort. Richtig wäre " + leser2 + "gewesen.");  
                                Thread.Sleep(500);
                                name1 = name1 + 1;
                                fehler = fehler + 1;
                                goto wort;
                             }

Content-Key: 320787

Url: https://administrator.de/contentid/320787

Printed on: April 24, 2024 at 17:04 o'clock

Member: Thomas2
Thomas2 Nov 12, 2016 at 21:02:19 (UTC)
Goto Top
Hi,

meintest du evtl. if (antwort == "leser2")?

Gruß,
Thomas
Member: homeroma
homeroma Nov 12, 2016 at 21:07:35 (UTC)
Goto Top
Nein, denn leser2 gehört zu dem einlesen der 2. textdatei.
Member: Thomas2
Thomas2 Nov 12, 2016 at 21:35:29 (UTC)
Goto Top
Hast du schon leser2 und Antwort ausgegeben und überprüft?
Member: homeroma
homeroma Nov 13, 2016 at 07:29:54 (UTC)
Goto Top
habe ich gerade - antwort entspricht genau dem, was ich eingegeben habe, und dem, was richtig ist! (leser2) D-:
Mitglied: 131381
131381 Nov 13, 2016 updated at 08:41:06 (UTC)
Goto Top
Hi,
welcher Depp nutzt denn heute noch "goto" in einer Sprache wie C#?? face-big-smile das macht man heutzutage mit while-Schleifen.

Tipp: Beim Einlesen einer Textdatei wandern eventuelle Leerzeichen und Zeilenumbrüche \r\n der Textdatei mit in die Variable die du mit der Eingabe des Users vergleichst, diese solltest du also entfernen. Zusätzlich ist der Vergleich natürlich Case-Sensitive so wie du ihn hier machst.
Also noch viel zu viele Stellen die du abfangen solltest.

Gruß
Member: homeroma
homeroma Nov 13, 2016 at 08:51:12 (UTC)
Goto Top
OK Ich habe Antwort und leser2 in Dezimal-Werte (int) umgewandelt und jetzt geht es. Heißt das, dass bei String == nicht funktioniert? Ansonsten Ploblem gelöst/unmgangen.
Mitglied: 131381
131381 Nov 13, 2016 updated at 09:47:07 (UTC)
Goto Top
Zitat von @homeroma:

OK Ich habe Antwort und leser2 in Dezimal-Werte (int) umgewandelt und jetzt geht es. Heißt das, dass bei String == nicht funktioniert?
Doch,
https://msdn.microsoft.com/de-de/library/53k8ybth.aspx
aber wie gesagt, wenn du nur ein unsichtbares Zeichen in deine Strings bekommst sind sie nicht mehr gleich. Ein Umwandeln in integer eliminiert solche Zeichen in der Regel. Das ist der Grund face-wink
Du solltest hier aber trotzdem noch den Fall abfangen wenn der User keine Zahlen sondern Strings eingibt die sich nicht in Integer umwandeln lassen, entweder mit TryParse einem try ... catch oder einem Regex.
Machst du das nicht schmiert dein Programm dann nämlich ganz schnell unschön ab!