数组超出范围Euler 52

时间:2014-11-16 14:51:54

标签: c# string char int toarray

我一直试图在欧拉上解决这个问题。我想将一个整数转换为一个字符串数组。在此之后,我想将每个字符串转换为一个字符数组,这是我的代码开始给出错误的地方。

namespace Problem_52_Euler
{
    class Program
    {
        static void Main(string[] args)
        {
            for (uint i = 1; i < 1000000000; i++)
            {
                string[] xint = new string[i];                       
                char[] xArray = xint[i].ToCharArray();      // This line is going out of bounds              
                char[] yArray = xint[i + 1].ToCharArray();

                for (uint j = 0; j < xArray.Length; j++)
                {
                    char xInteger = xArray[j];
                    for (uint k = 0; k < yArray.Length; k++)
                    {
                        char yInteger = yArray[k];
                        if (xArray[0] == yArray[k] && xArray[0 + j] == yArray[k])
                        {
                            Console.WriteLine(" " + i);
                        }
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

当您创建长度为i的数组时,它将包含从0i-1的索引。

如果i例如是4,new string[i]将生成索引为0,1,2和3的数组。您无法访问索引4处的项目,因为它不会存在。

注意:您不需要将字符串转换为字符数组来访问字符,您可以访问字符串的字符,就像它是一个字符数组一样。

此外,创建字符串数组不会创建任何字符串,只能用于引用字符串。如果您只是创建数组,然后尝试从中获取一个字符串,您将获得一个空引用。