Java错误:"不兼容的类型:int无法转换为Player

时间:2016-05-10 17:40:30

标签: java int bluej selection-sort

我的代码出现问题,无法弄清楚如何解决我收到的错误。我收到错误"不兼容的类型:int无法转换为播放器"在包含团队的行[index] = temp;任何指导将不胜感激。我是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;
    }
}

2 个答案:

答案 0 :(得分:1)

team[index] = temp;

tempint,由您的方法定义。 teamPlayer个对象的数组,因此team[index]Player。您正尝试在此行上为int分配Player

请注意,您在此处设置temp的值:

temp = team[smallestIndex].getNumber();

我发现您的代码有点难以阅读,因为我不太了解上下文,但您应该确保始终为team[someIndex] Player对象分配。

答案 1 :(得分:1)

这里的问题就是错误的含义。参数teamPlayer个对象的数组。 temp只是一个int。因此,当您尝试设置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获取播放器阵列的长度。这样你就不必每次都要依赖正确的长度。你的for循环看起来像这样

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