多维数组问题:索引越界,如何创建含负数的300元素数组
嘿,我来帮你捋捋这俩问题哈~
先搞定「数组越界」报错
你遇到的 Index was outside the bounds of the array 错误,本质就是访问了数组不存在的索引。举个例子:你创建了300个元素的数组,它的索引范围是 0 到 299(因为数组索引从0开始计数),要是你写了 array[300] 或者更高的索引,肯定就会触发这个报错。
建议先检查这几个地方:
- 循环遍历数组时,是不是把终止条件写成了
i <= 300而不是i < 300? - 多维数组的话,是不是搞混了维度的长度?比如二维数组
[10,30](总300元素),行索引只能到9,列索引只能到29,别写错了。 - 有没有手动指定索引时,不小心写了超过数组长度的数字?
创建包含负数的300元素数组
下面给你几种常用的实现方式,拿C#举例(毕竟这个报错是.NET生态里的常见问题),你可以参考适配自己的语言:
1. 手动指定部分负数
如果需要自定义哪些位置是负数,剩下的用默认值填充:
// 一维数组,直接声明长度为300 int[] myArray = new int[300]; // 给指定索引赋值负数 myArray[5] = -3; myArray[20] = -17; // 其他未赋值的元素默认是0,你也可以继续添加更多负数
2. 随机生成包含正负的数组
要是想快速生成一堆混合正负的随机数,比如范围在 -100 到 100 之间:
Random rand = new Random(); int[] myArray = new int[300]; for (int i = 0; i < myArray.Length; i++) { // Next(min, max) 生成的数包含min,不包含max,所以要到100的话写101 myArray[i] = rand.Next(-100, 101); }
3. 多维数组的情况(如果用的是多维)
如果是多维数组(比如10行30列,总300元素),同样可以加负数,同时注意索引范围:
// 二维数组,10行×30列=300元素 int[,] multiArray = new int[10, 30]; // 手动给某个位置设负数 multiArray[3, 12] = -25; // 或者循环填充随机正负值 Random rand = new Random(); for (int row = 0; row < multiArray.GetLength(0); row++) { for (int col = 0; col < multiArray.GetLength(1); col++) { multiArray[row, col] = rand.Next(-50, 50); } }
最后再提个小建议:不管是一维还是多维数组,尽量用数组自带的长度属性(比如一维用 array.Length,多维用 array.GetLength(n),n是维度序号)来控制循环边界,别硬写数字,这样后续改数组长度时就不容易再出越界问题啦~
内容的提问来源于stack exchange,提问作者AldoMunoZz
相关产品推荐
相关产品推荐

