Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C程序,数组_C#_.net - Fatal编程技术网

C# C程序,数组

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

我想为你做一个侮辱性的节目。我想用数组来存储从a到z的整个字母表。我使用了if语句,所以当用户按下字母a时,会发生一些事情。而且,如果他只按了一封信,其他事情就会发生。我现在卡住了

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!