C# C程序,数组
我想为你做一个侮辱性的节目。我想用数组来存储从a到z的整个字母表。我使用了if语句,所以当用户按下字母a时,会发生一些事情。而且,如果他只按了一封信,其他事情就会发生。我现在卡住了C# C程序,数组,c#,.net,C#,.net,我想为你做一个侮辱性的节目。我想用数组来存储从a到z的整个字母表。我使用了if语句,所以当用户按下字母a时,会发生一些事情。而且,如果他只按了一封信,其他事情就会发生。我现在卡住了 class Program { static void Main(string[] args) { Console.WriteLine("Type any bastard letter!!!"); ConsoleKeyInfo keyInfo = Console.R
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Type any bastard letter!!!");
ConsoleKeyInfo keyInfo = Console.ReadKey();
char[] array1 = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
if (keyInfo.KeyChar == 'a')
{
SpeechSynthesizer synth = new SpeechSynthesizer();
Console.WriteLine("You have typed a letter");
synth.Speak("You have typed a letter");
}
else
{
SpeechSynthesizer synth = new SpeechSynthesizer();
Console.WriteLine(" ");
Console.WriteLine("did you type {0}", keyInfo.KeyChar.ToString());
synth.Speak("You have typed a bastard number you infentile pillock");
}
}
}
您需要遍历数组并检查是否有任何字符与用户输入的字符匹配,但一个简单的解决方案是执行以下操作:
if (array1.Any(c => c == keyInfo.KeyChar)){ ... }
else { ... }
我假设当你说让数组工作时,你的意思是我想测试在开头键入的字母是否在数组中
char[] array1 = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
if (array1.Contains(keyInfo.KeyChar))
{
// user typed a letter
}
else
{
// user typed not a letter
}
我试图向您展示如何在C中检查数组中是否有内容。但由于您的目标是检查字符是否为字母,因此还有更好的方法:Char.IsAlpha和IsDigit
在这种情况下,您根本不需要初始数组:
if (Char.IsAlpha(keyInfo.KeyChar))
{
// character is a letter (will work for both lowercase or uppercase)
}
else if (Char.IsDigit(keyInfo.KeyChar))
{
// character is a digit
}
else
{
// char is neither a digit or a letter
}
最后,另一种不涉及数组且严格等同于您最初方法的方法感谢@JeppeStigNielsen在评论中:
if (keyInfo.KeyChar >= 'a' && keyInfo.KeyChar <= 'z')
{
// character is a lowercase letter from English-alphabet
}
else if (keyInfo.KeyChar >= '0' && keyInfo.KeyChar <= '9')
{
// character is a digit
}
else
{
// char is neither a digit or a letter
}
这是因为字符实际上是对应字符的代码号,字母或数字的代码是连续值 无需迭代,只需使用以下表达式:
if (array1.Contains(keyInfo.KeyChar)) // a letter has been typed...
{
// ...
}
else
{
// ...
}
使用System.Linq:如果array1.ContainskeyInfo.KeyChar{…}只是作为旁注,如果你总是检查完整的英文字母a-z,你可以使用:如果c>='a'&&c,你应该练习侮辱的艺术。试试看:你打字像个奶农。除此之外,您可以放弃数组,使用Char.isleter和Char.ToLower,或者简单地比较Char>='a'或@PatrickArtner是否合适。你打字像个傻瓜cow@Enigmativity而且,由于字符串本身已经是IEnumerable的,所以您甚至不需要进行字符排列;使用LINQ,您可以直接在字符串上执行.ContainskeyInfo.KeyChar。我欣赏您的软件使用的粗鲁语言xD@OscarTsang如果keyInfo.KeyChar>='a'&&keyInfo.KeyChar@JeppeStigNielsen:完全正确,并且您的方法不涉及任何数组,您也可以这样做。更好的是:Char.IsAlpha!