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!
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;
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 320787
Url: https://administrator.de/forum/fehler-bei-if-csharp-320787.html
Ausgedruckt am: 29.04.2025 um 02:04 Uhr
7 Kommentare
Neuester Kommentar

Hi,
welcher Depp nutzt denn heute noch "goto" in einer Sprache wie C#??
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ß
welcher Depp nutzt denn heute noch "goto" in einer Sprache wie C#??
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ß

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,OK Ich habe Antwort und leser2 in Dezimal-Werte (int) umgewandelt und jetzt geht es. Heißt das, dass bei String == nicht funktioniert?
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
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!