为什么显示Index超出了数组的范围

时间:2016-10-21 01:01:59

标签: c# arrays indexing reverse

我得到的索引超出了第33和46行的界限。为什么会这样? 我试图扭转数组。我知道错误代码的含义,但我不知道为什么我会得到它。 第33行 - 字符串反转= ReverseArray(制作); 第46行 - 返回reverseCraft [5];

        //make an array to be reversed
        string[] craftArray = new string[5] { "Iron", "Stone", "Copper", "Steel", "Clay" };


        //create a variable to hold return value
        string[] crafting = new string[5];





        //function call the ReverseCraft method
        string reversed = ReverseArray(crafting);

        //Report the calculation to the user
        Console.Write("The array reversed is" + reversed);



    }
    public static string ReverseArray(string[] craft)
    {
        //create a variable and reverse
        string[] reverseCraft = new string[5] { craft[4], craft[3], craft[2], craft[1], craft[0] };
        //return value
        return reverseCraft[5];

    }
}
}

2 个答案:

答案 0 :(得分:2)

您的反向方法签名错误。它应该返回string[],如下所示:

public static string[] ReverseArray(string[] craft) {
    //create a variable and reverse
    string[] reverseCraft = new string[5] { craft[4], craft[3], craft[2], craft[1], craft[0] };
    //return value
    return reverseCraft;
}

使用此代码,您需要做的就是正确打印结果:

string[] reversed = ReverseArray(crafting);
//Report the calculation to the user
Console.Write("The array reversed is " + string.Join(", ", reversed));

答案 1 :(得分:0)

它在线上抛出错误

return reverseCraft [5];

因为没有reverseCraft [5]。

reverseCraft的第一个元素是reverseCraft [0],最后一个元素是reverseCraft [4]。