当前位置: 首页 > 知识库问答 >
问题:

Java 错误:“不兼容的类型:int 无法转换为播放器

方兴旺
2023-03-14

我的代码有问题,不知道如何纠正我收到的错误。我在包含team[index]=temp的行中遇到错误“不兼容类型:int无法转换为Player”;任何指导都将不胜感激。我对Java很陌生,这是我第一次尝试使用选择排序。我已经试着环顾四周和搜索,但在三天后仍然没有弄清楚这个错误。提前感谢!

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个答案

盖锐进
2023-03-14
匿名用户

team[index] = temp;

< code>temp是一个< code>int,由您的方法定义。< code>team是一个< code>Player对象数组,因此< code>team[index]是一个< code>Player。您正试图在此行将一个< code>int赋值给一个< code>Player。

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

temp = team[smallestIndex].getNumber();

我发现你的代码有点难以阅读,因为我真的不知道上下文,但你应该确保你总是为team[someIndex]分配一个Player对象。

东门焕
2023-03-14

这里的问题是错误的含义。参数<code>team</code>是<code>Player</code>对象的数组temp</code>只是一个int。因此,当您尝试设置<code>team〔index〕</code>(这是一个Player对象)时,它不能这样做。

你只是想交换这两名球员吗?也许temp应该是播放器

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++)

 类似资料: