Ошибка Java: «несовместимые типы: int нельзя преобразовать в Player

У меня возникли проблемы с моим кодом, и я не могу понять, как исправить ошибку, которую я получаю. Я получаю сообщение об ошибке «несовместимые типы: int нельзя преобразовать в Player» в строке, содержащей team[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;
    }
}

person ADE    schedule 10.05.2016    source источник


Ответы (2)


Проблема здесь только в том, что означает ошибка. Параметр team представляет собой массив из Player объектов. temp - это просто целое число. Поэтому, когда вы пытаетесь установить team[index], который является объектом Player, он не может этого сделать.

Вы просто пытаетесь поменять местами двух игроков в сортировке? Может быть, темп должен быть Player

Player temp;

Тогда на обмен

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

Кроме того, вы, вероятно, не захотите передавать team_size, поскольку вы можете получить длину своего массива Player, используя team.length. Таким образом, вам не нужно полагаться на передачу правильной длины каждый раз. Ваш цикл for будет выглядеть так

for (index = 0; index < team.length; index++)
person element11    schedule 10.05.2016
comment
Это полностью решило мою проблему. Я не понимал, что temp, являющийся int, будет проблемой. Спасибо за помощь в разъяснении ошибки для меня, и как ее решить! - person ADE; 10.05.2016
comment
Без проблем! Если это действительно решило вашу проблему, обычно щелкают зеленую галочку слева от ответа. Спасибо. - person element11; 10.05.2016

team[index] = temp;

temp - это int, как определено вашим методом. team — это массив из Player объектов, поэтому team[index] — это Player. Вы пытаетесь присвоить int Player в этой строке.

Обратите внимание, что здесь вы устанавливаете значение temp:

temp = team[smallestIndex].getNumber();

Я нахожу ваш код немного трудным для чтения, так как я действительно не знаю контекста, но вы должны убедиться, что вы всегда назначаете team[someIndex] объекту Player.

person Zircon    schedule 10.05.2016
comment
Спасибо также за помощь в разъяснении ошибки и почему я ее получаю. - person ADE; 10.05.2016