【发布时间】:2020-09-28 09:32:03
【问题描述】:
我正在开发一个简单的匹配游戏,我想输出一个排行榜,但我得到一个异常数组索引超出范围。在调试中,虽然它说表的大小是 3,并且 i 和 j 都是 0 和 1,这对我来说很奇怪,因为数组大小为 3,这并没有超出范围。这是我对数组进行排序的代码按高分从大到小排列对象,感谢您的帮助。
for(int i = 0; i<tabUporabnikov.Length-1; i++)
{
for(int j = (i+1); j<tabUporabnikov.Length; j++)
{
if (tabUporabnikov[i].highscore < tabUporabnikov[j].highscore)
{
Uporabnik[] zacasna = new Uporabnik[1];
zacasna[1] = tabUporabnikov[j];
tabUporabnikov[j] = tabUporabnikov[i];
tabUporabnikov[i] = zacasna[1];
}
}
}
【问题讨论】:
-
我假设
zacasna有 0 或 1 个项目的空间。 -
您正在尝试设置
zacasna[1],即使您刚刚使用一个元素创建了它。不过,目前还不清楚为什么要在那里创建一个数组。为什么不只是一个局部变量Uporabnik tmp = tabUporabnikov[j];? (然后将tabUporabnikov[i] = tmp;设置为块中的最后一行)。 -
应该是
zacasna[0]。最好声明一个变量而不是数组 -
另外请注意,.NET 中有内置的排序方法 - 除非您的目标是了解如何实现排序,否则我建议使用
Array.Sort或 LINQ。 -
是的,我尝试使用 System.Linq,但在将其嵌入环境时遇到了问题。我还不知道该怎么做,因为当我尝试它时它会崩溃我所有的文件,我不得不从我的备份重新开始。