如何在第一个 do while 循环后向用户提供不同的消息?
How to provide a different message to the user after the first do while loop?
所以我只是问用户他们的名字,如果用户认为它不正确,然后再问这个问题。但是在他们说错之后我想说"Apologies, what is the correct name?"。但是将它放在 do while 循环中会使它说第一次没有任何意义。我希望它在第一次错误输入后和每次输入错误后都说出来。
string nameCorrect;
string playerName;
do
{
Console.WriteLine("What is your name?");
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
} while(nameCorrect == "No");
if(nameCorrect == "Yes")
{
Console.WriteLine("Great, lets move on.");
}
Console.ReadKey();
如果您将提示存储在字符串变量中,您可以在第一次后更改它。只需确保您将更改置于条件中,这样您就不会在每次循环时都重建一个新的不可变字符串。
string nameCorrect;
string playerName;
string namePrompt = "What is your name?";
do
{
Console.WriteLine(namePrompt);
if (namePrompt == "What is your name?") namePrompt = "Apologies, what is the correct name?"
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
} while(nameCorrect == "No");
if(nameCorrect == "Yes")
{
Console.WriteLine("Great, lets move on.");
}
Console.ReadKey();
只需使用一个变量,您可以在第一次迭代后更新它:
string message = "What is your name?";
do
{
Console.WriteLine(message);
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
message = "Apologies, what is the correct name?";
}
while (nameCorrect == "No");
只需记录他们尝试了多少次:
string nameCorrect;
string playerName;
int attempt = 0;
do
{
Console.WriteLine(attempt > 0
? "Apologies, what is the correct name?"
: "What is your name?");
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
attempt++;
} while(nameCorrect == "No");
if(nameCorrect == "Yes")
{
Console.WriteLine("Great, lets move on.");
}
Console.ReadKey();
string nameQuestion = "What is your name?";
string name = string.Empty;
bool needName = true;
do {
Console.WriteLine(nameQuestion);
name = Console.ReadLine();
Console.WriteLine($"Is {name} correct?");
if (Console.ReadLine().ToLower().Equals("yes")) {
needName = false;
}
else {
nameQuestion = "Apologies, what is the correct name?";
}
} while (needName);
Console.WriteLine("Great, lets move on.");
Console.ReadKey();
所以我只是问用户他们的名字,如果用户认为它不正确,然后再问这个问题。但是在他们说错之后我想说"Apologies, what is the correct name?"。但是将它放在 do while 循环中会使它说第一次没有任何意义。我希望它在第一次错误输入后和每次输入错误后都说出来。
string nameCorrect;
string playerName;
do
{
Console.WriteLine("What is your name?");
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
} while(nameCorrect == "No");
if(nameCorrect == "Yes")
{
Console.WriteLine("Great, lets move on.");
}
Console.ReadKey();
如果您将提示存储在字符串变量中,您可以在第一次后更改它。只需确保您将更改置于条件中,这样您就不会在每次循环时都重建一个新的不可变字符串。
string nameCorrect;
string playerName;
string namePrompt = "What is your name?";
do
{
Console.WriteLine(namePrompt);
if (namePrompt == "What is your name?") namePrompt = "Apologies, what is the correct name?"
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
} while(nameCorrect == "No");
if(nameCorrect == "Yes")
{
Console.WriteLine("Great, lets move on.");
}
Console.ReadKey();
只需使用一个变量,您可以在第一次迭代后更新它:
string message = "What is your name?";
do
{
Console.WriteLine(message);
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
message = "Apologies, what is the correct name?";
}
while (nameCorrect == "No");
只需记录他们尝试了多少次:
string nameCorrect;
string playerName;
int attempt = 0;
do
{
Console.WriteLine(attempt > 0
? "Apologies, what is the correct name?"
: "What is your name?");
playerName = Console.ReadLine();
Console.WriteLine("Is {0} correct?", playerName);
nameCorrect = Console.ReadLine();
attempt++;
} while(nameCorrect == "No");
if(nameCorrect == "Yes")
{
Console.WriteLine("Great, lets move on.");
}
Console.ReadKey();
string nameQuestion = "What is your name?";
string name = string.Empty;
bool needName = true;
do {
Console.WriteLine(nameQuestion);
name = Console.ReadLine();
Console.WriteLine($"Is {name} correct?");
if (Console.ReadLine().ToLower().Equals("yes")) {
needName = false;
}
else {
nameQuestion = "Apologies, what is the correct name?";
}
} while (needName);
Console.WriteLine("Great, lets move on.");
Console.ReadKey();