何らかの理由で自分自身を繰り返し、出力は私が混乱して作っている:私は最初にJを入力するとConsole.WriteLineを私はC#での絶対的な初心者だと、このコードを書かれている
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 + "!");
}
、それは私に聞いてきます私は少なくとも2文字を入力するまで再び。私はその後ジョン・ドウを入力すると、それは私にこの出力を与える二回Console.WriteLine("Hello " + playerName + "!");
、それはコンソールで次のようになりますなぜ私は理解していない:
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?
は、それはおそらく使用するのがベストプラクティスではありません再帰的な方法。私は言語を学ぶためにやっています。
再帰のため2回印刷されています。あなたがそれを歩いていくと、あなたはそれを見るでしょう。 –
各再帰呼び出しは終了する必要があります。あなたの "内側の" PlayerInfoがコードを終了させて、前の呼び出しに "バックトラック"し、次に何をするかを指定します。有効な入力の前にJを2回入力すると、メッセージは3回表示されます。理由を理解するために、ステップバイステップで(または手動で)デバッグしようとする必要があります – Sehnsucht
デバッガでコードをステップ実行します。 – Servy