
C#执行中出现“索引超出数组界限”的错误。应该如何修改?
//抽取试题privatevoidSetSelectedQuestionIds(){Randomrandom=newRandom();intquestionIndex=0...
// 抽取试题
private void SetSelectedQuestionIds()
{
Random random = new Random();
int questionIndex = 0; // 随机产生的问题的索引值
// 抽取每一道题并保存抽出的题目的Id
int i = 0; // 记录抽取了几道题
while (i < QuizHelper.questionNum)
{
// 在所有题目的数量范围内抽题产生随机数
questionIndex = random.Next(QuizHelper.allQuestionIds.Length);
if (QuizHelper.selectedStates[questionIndex] == false) // 如果没有被选中过,可以选择
{
QuizHelper.selectedQuestionIds[i] = QuizHelper.allQuestionIds[questionIndex];
QuizHelper.selectedStates[questionIndex] = true;
i++;
}
}
} 展开
private void SetSelectedQuestionIds()
{
Random random = new Random();
int questionIndex = 0; // 随机产生的问题的索引值
// 抽取每一道题并保存抽出的题目的Id
int i = 0; // 记录抽取了几道题
while (i < QuizHelper.questionNum)
{
// 在所有题目的数量范围内抽题产生随机数
questionIndex = random.Next(QuizHelper.allQuestionIds.Length);
if (QuizHelper.selectedStates[questionIndex] == false) // 如果没有被选中过,可以选择
{
QuizHelper.selectedQuestionIds[i] = QuizHelper.allQuestionIds[questionIndex];
QuizHelper.selectedStates[questionIndex] = true;
i++;
}
}
} 展开
2个回答
展开全部
索引是从0开始的,而length,与索引最大值的关系应该是 length-1
questionIndex = random.Next(QuizHelper.allQuestionIds.Length);
你这句话,就把索引的值,赋成了长度值,超出了索引范围,所以报错了,改成length-1
questionIndex = random.Next(QuizHelper.allQuestionIds.Length);
你这句话,就把索引的值,赋成了长度值,超出了索引范围,所以报错了,改成length-1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询