while (asteriskWord != hangCharacters && score < 5)
{
while ( letter != ) //This is where I want to test for A-Z a-z
{
Console.WriteLine("Enter a letter please");
letter = Convert.ToChar(Console.ReadLine());
}
}
在第一个while-loop
之后,我希望能够将输入置于while循环中,如果值为= letters A-Z或a-z ,则会中断。
这样,如果用户输入错误的信息,循环将continue
询问信息。
感谢您的时间和考虑。我也试着写信!=&#39; A&#39; &安培;&安培;信!=&#39; a&#39; ......等等,但由于某种原因它没有用。
答案 0 :(得分:13)
字符可以相互比较,就像数字一样:
while (!((letter >= 'A' && letter <= 'Z') || (letter >= 'a' && letter <= 'z'))) {
Console.WriteLine("Enter a letter please");
letter = Convert.ToChar(Console.ReadLine());
}
答案 1 :(得分:8)
最简单的方法就是使用比较。如果你肯定想在一个单独的表达中做到这一点,Glorfindel的答案是恰当的。然而,所有这些括号和否定使我对可读性感到紧张。我将它分解为一个单独的方法:
while (!IsValidLetter(letter))
{
...
}
...
private static bool IsValidLetter(char letter)
{
return (letter >= 'a' && letter <= 'z') ||
(letter >= 'A' && letter <= 'Z');
}
无论你发现哪个更具可读性 - 后者更容易在以后修改,当然,如果你最终有更复杂的要求。
答案 2 :(得分:3)
另一种选择是使用正则表达式,如下所示:
while (!Regex.IsMatch(letter, "[a-zA-Z]"))
{
Console.WriteLine("Enter a letter please!");
letter = Console.ReadLine();
}