索引超出for循环要求的范围

时间:2018-12-17 19:19:31

标签: c# for-loop

我在main方法中声明了一个字符串,并允许用户输入它。

static void Main(string[] args)
{
    string phrase;
    Console.Write("Type english letters.\nEnter phrase");
    phrase = Console.ReadLine();
    morseCode(phrase);
    Console.ReadLine();
}

在main之外,我声明了一个void函数。该函数假定将字符串的每个元素发送到另一个函数,该函数返回字母的摩尔斯翻译,但我对该函数没有问题。

这是空函数

static void morseCode(string p)
{
    for(int i=0; p[i] != '\0'; i++)
    {
        Console.Write(morseEncode(p[i]) + "/");
    }
}

我使用VS。我没有从调试器收到任何错误,并且可以执行代码。它会执行其预期的操作。但是在运行时出现此错误:

  

System.IndexOutOfRangeException

错误指示符指向for循环。我在要求内做错了。正如我所说,代码可以运行,但我想解决此问题。

2 个答案:

答案 0 :(得分:2)

c#字符串不是必须终止的0

static void morseCode(string p)
{
    for(int i=0; i<p.Length; i++)
    {
        Console.Write(morseEncode(p[i]) + "/");
    }
}

答案 1 :(得分:0)

因为您不需要索引,所以可以执行

foreach(char c in p)
    Console.Write(morseEncode(c) + "/");