为什么它显示Index在数组的边界之外

本文关键字:边界 数组 显示 Index 为什么 | 更新日期: 2023-09-27 18:14:10

我在第33行和第46行得到索引越界。为什么会这样?我在试着反转这个数组。我知道错误代码是什么意思,但我不知道为什么我得到它。第33行-字符串反转= ReverseArray(锻造);第46行- return 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];
    }
}
}

为什么它显示Index在数组的边界之外

您的反向方法签名错误。它应该返回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));

这一行抛出错误

返回reverseCraft [5];

因为没有reverseCraft[5].

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