从数组中删除重复项时出现超出范围异常

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异常[重复]

LeetCode:删除排序数组中的重复项 (Remove Duplicates from Sorted Array)

从2D列表中删除重复项(浮点)

从 Kotlin 中的数组中删除重复项

NodeJS:如何从数组中删除重复项[重复]

如何从二维数组中删除重复项? [关闭]