我有一段代码,我试图让它成为用户输入他们的名字,我希望它识别它是否是一个实际的名称.所以为了简单起见我只想让它接受字母.
我输入一个有效的名称,然后继续下一段代码.但是,当我输入无效字符时,我会收到"无效名称"消息,但在此之后无论我输入什么,只是一直说"无效名称".
Console.WriteLine("Please Enter First Name");
bool isNotName = true;
string firstName = Console.ReadLine();
while (isNotName)
{
if (Regex.IsMatch(firstName, @"^[a-zA-Z]+$"))
{
{
Console.WriteLine("Welcome {0}", firstName);
}
isNotName = false;
}
else
{
Console.WriteLine("Invalid Name");
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
firstName值未在循环中更新,因此请尝试以下操作:
string firstName = Console.ReadLine();
while (isNotName)
{
if (Regex.IsMatch(firstName, @"^[a-zA-Z]+$"))
{
{
Console.WriteLine("Welcome {0}", firstName);
}
isNotName = false;
}
else
{
Console.WriteLine("Invalid Name");
firstName = Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
Console.WriteLine("Please Enter First Name");
bool isNotName = true;
string firstName = Console.ReadLine();
while (isNotName)
{
if (Regex.IsMatch(firstName, @"^[a-zA-Z]+$"))
{
Console.WriteLine("Welcome {0}", firstName);
isNotName = false;
}
else
{
Console.WriteLine("Invalid Name");
firstName = Console.ReadLine(); // <---- re-assign name here
}
}
Run Code Online (Sandbox Code Playgroud)
另外,我会重构您的代码以删除布尔标志:
Console.WriteLine("Please Enter First Name");
string firstName = Console.ReadLine();
while(!Regex.IsMatch(firstName, @"^[a-zA-Z]+$"))
{
Console.WriteLine("Invalid Name");
firstName = Console.ReadLine();
}
Console.WriteLine("Welcome {0}", firstName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |