C# Doppelt buchstaben im Ratewort werden nicht erkannt?
Ich habe das Problem das wenn ich bei meinem Hangman Spiel als Ratewort z.B. "aap" eingebe und "a" richtig errate nur das erste "a" aufgelöst wird und das andere verdeckt bleibt und nicht mehr geraten werden kann.
Hier mein Code:
Ich weiß überhaupt nicht mehr weiter.
Mfg
Korrektur:
Weiter gebracht haben mich die Tipps aber jetzt nicht wirklich.
Der Fehler bleibt immer noch bestehend
Ich habe es geschafft danke für die Tipps. Ich musste ein Wort mit zwei gleichen Buchstaben natürlich auch erraten
2 Antworten
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
In der Schleife schreibst du
if (word[i] == guess && !letter.contains(guess))
{
// einige Anweisungen stehen hier
letter.Add(guess);
// ....
}
Du fügtst den geratenen Buchstaben beim erstmaligen Durchlaufen der Bedingung in die Menge letter ein und danach kann die Bedingung des if-Statements bei weiteren Durchläufen nicht mehr wahr sein.
Das ist ein subtiler Fehler.
Du darfst den geratenen Buchstaben erst in die Menge einfügen, nachdem du die Schleife verlassen hast, mit der du die Striche veränderst. Das ist eine sehr kleine Änderung im Programm - aber mit großer Wirkung.
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Verschiebe den Test auf "letter" aus der Schleife. So, wie du es jetzt hast, stezt du beim ersten gefundenen das Char in die Liste der gefundenen und verhinderst dadurch, dass die if-Bedingung bei weiteren Durchläufen true wird.