我的代码遇到问题,无法弄清楚如何纠正我收到的错误。在包含team [index] = temp的行中出现错误“类型不兼容:int无法转换为Player”;任何指导将不胜感激。我真的是Java的新手,这是我第一次尝试使用选择排序。我尝试环顾四周并进行搜索,但是在3天的时间里将我的头撞在桌子上后,仍然没有发现此错误。提前致谢!

public static void selectionSort(Player[] team, int team_size)
{
    int index;
    int smallestIndex;
    int minIndex;
    int temp;

    for (index = 0; index < team_size - 1; index++)
    {
        smallestIndex = index;

        for (minIndex = index + 1; minIndex < team_size; minIndex++)
            if(team[minIndex].getNumber() < team[smallestIndex].getNumber())
                smallestIndex = minIndex;
        temp = team[smallestIndex].getNumber();
        team[smallestIndex] = team[index];
        team[index] = temp;
    }
}

最佳答案

这里的问题就是错误的含义。参数teamPlayer对象的数组。 temp只是一个整数。因此,当您尝试设置team[index](这是一个Player对象)时,它无法做到这一点。

您是否只是想互换两个玩家?也许temp应该是Player

Player temp;


然后换

temp = team[smallestIndex]; //returns the actual Player instance rather than getNumber();
team[smallestIndex] = team[index];
team[index] = temp;


另外,您可能不想传递team_size,因为通过使用team.length可以获取Player数组的长度。这样,您不必每次都依赖传递正确的长度。您的for循环看起来像这样

for (index = 0; index < team.length; index++)

10-06 10:18
查看更多