C#实现冒泡排序时数组下标取值错误并报IndexOutOfRangeException如何解决
问题排查结果
核心错误原因
- 混淆了数组元素值与数组索引的概念:你代码中
int i = numbers[0]已经成功获取到数组第一个元素的取值2,但后续你执行Console.WriteLine(numbers[i])时,是用这个元素值2作为索引去访问数组,C#数组索引从0开始计数,索引2对应数组的第三个元素,所以你会拿到错误的第三个元素值。 - 第二段代码存在索引越界问题:
numbers[7]的取值为9,你的数组总长度为9,合法索引范围是0~8,调用numbers[9]会直接抛出IndexOutOfRangeException运行时异常。
修正后代码
如果你需要直接打印数组第一个元素、第8个(索引为7)元素的取值,直接输出对应索引的元素即可,不需要嵌套第二层数组索引:
using System; public class Bubble_Sort { public static void Main(string[] args) { int[] numbers = new int[] { 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 输出第一个元素(索引0) Console.WriteLine(numbers[0]); // 输出索引为7的元素 Console.WriteLine(numbers[7]); Console.Read(); } }
运行修正后的代码输出结果为:
2 9
符合预期的取值结果。
内容的提问来源于stack exchange,提问作者Alec Knapper
相关产品推荐
相关产品推荐

