c #IndexOutOfRangeException boolean char数组

时间:2017-03-18 01:22:51

标签: c# arrays if-statement char

首先,对不起我的英语。 我正在研究一个控制台程序,并且该错误位于“if”方法中。我让你成为程序的核心,这样你就可以运行它并帮助我解决这个问题

class Program
{
    static void Main(string[] args)
    {
        String read = "auto";
        String write;

        char[] read_arr = read.ToCharArray();


        Console.WriteLine("Escribe la siguiente palabra: {0}", read);

        write = Console.ReadLine();
        char[] write_arr = write.ToCharArray();


        if (read_arr.Length == write_arr.Length)
        {
            if(read == write)
            {
                Console.WriteLine("Felicitaciones!!, Acertaste");

            }
            else
            {
                for(int c = 0; c <= read_arr.Length; c++)
                {
                    if (read_arr[c] != write_arr[c])
                    {
                        Console.WriteLine("La letra '{0}' es incorrecta", write_arr[c]);
                    }
                }

                Console.WriteLine("Lo siento, te has equivocado");
            }
        }
        else
        {
            Console.WriteLine("Lo siento, te has equivocado");
        }
        Console.ReadKey();
    }
}

1 个答案:

答案 0 :(得分:2)

for(int c = 0; c <= read_arr.Length; c++)

从0开始,迭代直到长度。你应该使用严格的比较。删除&#34; =&#34;来自c <= read_arr.Length的char:

for(int c = 0; c < read_arr.Length; c++)

一个3大小的开始数组索引是0 - 1 - 2.当你从0开始时,不包括3。