-2

我创建了一个 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;

        }

数字[r] = nextValue; 导致异常。

有谁知道我要去哪里错了?

4

1 回答 1

4

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

Numbers = new int[36];

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

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

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

于 2021-09-19T16:13:18.047 回答