【问题标题】: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

标签: c# arrays loops for-loop do-while


【解决方案1】:

你用 36 个空格初始化你的 numbers 数组

Numbers = new int[36];

但在你的循环中,你分配给数字的位置最多为 49

 for (int r = 0; r <= 49; r++)
.....
Numbers[r] = nextValue;

您的循环最大值应更改为 36,它与随机生成所需的最大值无关

【讨论】:

  • 这是我的错误,我已将值更改为 36 但我仍然收到错误
  • 我显然是盲人没有注意到
猜你喜欢
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 2021-03-28
  • 2015-12-28
  • 2016-11-05
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多