2016-05-10 12 views
0

Ich habe Probleme mit meinem Code und kann nicht herausfinden, wie ich den Fehler beheben kann, den ich erhalte. Ich erhalte einen Fehler" inkompatible Typen: int kann nicht in Player umgewandelt werden "in der Zeile, die team [index] = temp enthält; jede Anleitung wäre sehr hilfreich. Ich bin wirklich neu in Java, und dies ist das erste Mal, dass ich Auswahlsortierung verwende. Ich habe versucht, mich umzusehen und gesucht, aber immer noch nicht diesen Fehler heraus nach 3 Tagen schlug meinen Kopf auf den Schreibtisch mit. Vielen Dank im Voraus!Java-Fehler: "Inkompatible Typen: int kann nicht in Player konvertiert werden

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; 
    } 
} 

Antwort

1

Das Problem hier ist nur, was der Fehler bedeutet. Der Parameter team ist ein Array von Player Objekten. temp ist nur ein int. Wenn Sie also versuchen, team[index] zu setzen, was ein Player-Objekt ist, kann es das nicht tun.

Versuchen Sie nur, die beiden Spieler in der Sorte zu tauschen? Vielleicht sollte Temp eine sein Player

Player temp; 

Dann für den Swap

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

Auch Sie wollen wahrscheinlich nicht in team_size passieren, wie Sie mithilfe von team.length die Länge Ihres Spieler Array erhalten. Auf diese Weise müssen Sie sich nicht darauf verlassen, dass Sie jedes Mal die richtige Länge übergeben. Ihre for-Schleife würde so aussehen:

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

Das hat mein Problem vollständig gelöst. Ich hatte nicht bemerkt, dass Temp ein Int wäre das Problem. Danke, dass Sie mir geholfen haben, den Fehler zu klären und wie Sie ihn beheben können! – ADE

+0

Kein Problem! Wenn es Ihr Problem gelöst hat, ist es üblich, auf das grüne Häkchen auf der linken Seite der Antwort zu klicken. Vielen Dank. – element11

1
team[index] = temp; 

temp ist ein int, wie von Ihrer Methode definiert. team ist ein Array von Player Objekten, also team[index] ist ein Player. Sie versuchen, in dieser Zeile einen int einem Player zuzuordnen.

Beachten Sie, dass Sie den Wert temp hier eingestellt:

temp = team[smallestIndex].getNumber(); 

finde ich Ihren Code ein wenig schwer zu lesen, da ich den Zusammenhang nicht wirklich wissen, aber Sie sollten sicherstellen, dass Sie immer zuweisen team[someIndex] ein Player Objekt.

+0

Vielen Dank auch für die Klärung des Fehlers und warum ich es bekommen habe. – ADE