ich ein absoluter Anfänger in C# bin und haben diesen Code geschrieben, und der Ausgang macht mich verwirrt:Console.WriteLine Wiederholt sich aus irgendeinem Grund
static void PlayerInfo() //Asking information about the player
{
Console.Write("Type your name: ");
string inputName = Console.ReadLine();
if (inputName.Length < 2)
PlayerInfo();
else
playerName = inputName;
Console.WriteLine("Hello " + playerName + "!");
}
Wenn ich J geben zuerst, es wird mich fragen wieder bis ich mindestens 2 Zeichen eintippe. Und wenn ich John Doe danach geben, wird es geben Sie mir diese Ausgabe zweimal Console.WriteLine("Hello " + playerName + "!");
Ich verstehe nicht, warum es so aussieht in der Konsole:
Type your name: J //The length is smaller than 2
Type your name: John Doe //Restart the function and type a valid length
Hello John Doe! //This is OK
Hello John Doe! //Why a second print?
Es ist wahrscheinlich nicht die beste Praxis zu verwenden, eine rekursive Methode. Ich mache es nur, um die Sprache zu lernen.
Es wird wegen der Rekursion zweimal gedruckt. Wenn du hindurchgehst, wirst du das sehen. –
Jeder rekursive Aufruf muss enden; Wenn Ihre "innere" PlayerInfo den Code "backtracks" auf den vorherigen Aufruf beendet und macht, was als nächstes kommt; Wenn Sie J zweimal vor einer gültigen Eingabe eingeben; Die Nachricht wird 3 Mal angezeigt. Sie sollten versuchen, Schritt für Schritt (oder von Hand) zu debuggen, um zu verstehen, warum besser – Sehnsucht
Schritt durch den Code mit einem Debugger. – Servy