从数组中删除重复项时出现超出范围异常
Posted
技术标签:
【中文标题】从数组中删除重复项时出现超出范围异常【英文标题】:Out of Range exception when removing duplicates from Array 【发布时间】:2021-11-13 14:26:42 【问题描述】:我创建了一个 1-49 之间的 36 个随机数组成的数组。我在 for 循环中嵌套了一个 do-while 循环,该循环将数字插入数组以删除任何重复的数字。运行代码进行测试时出现异常 "System.IndexOutOfRangeException: '索引超出了数组的范围。'"
Random rand = new Random();
int[] Numbers = new int[36];
for (int r = 0; r <= 36; r++)
int nextValue;
do
nextValue = rand.Next(1, 50);
while (Numbers.Contains(nextValue));
Numbers[r] = nextValue;
return Numbers;
Numbers[r] = nextValue; 导致异常。
有人知道我哪里出错了吗?
【问题讨论】:
可能是因为您为 Number 分配了 36 个值,但 r 上升到了 49。r
上升到 49,但您的阵列只上升到 36。
我已经改变了这个并更新了值但是它仍然抛出异常
有一种更简单的方法可以排除重复项……而且只有一行
试试这个 => for (int r = 0; r
【参考方案1】:
你用 36 个空格初始化你的 numbers 数组
Numbers = new int[36];
但在你的循环中,你分配给数字的位置最多为 49
for (int r = 0; r <= 49; r++)
.....
Numbers[r] = nextValue;
您的循环最大值应更改为 36,它与随机生成所需的最大值无关
【讨论】:
这是我的错误,我已将值更改为 36 但我仍然收到错误 我显然是盲人没有注意到以上是关于从数组中删除重复项时出现超出范围异常的主要内容,如果未能解决你的问题,请参考以下文章
向列表视图添加页脚时出现Indexoutofbound异常[重复]