Die Zeile return array[index1].compareTo(array[index2]);
liefert einen Fehler "Kann compareTo (double) für den primitiven Typ double" nicht aufrufen. Wie man dieses Problem löst?
Ersetze den Aufruf einer Instanzmethode compareTo
durch den Aufruf von statische compare
methode , so:
Damit können Sie Ihre double
s in einem Array von Primitiven behalten und Autoboxing vermeiden, bevor Sie eine Instanzmethode aufrufen.
In Java haben primitive Typen keine Methoden. Verwenden Sie stattdessen primitive Datentypen Wrapper-Klassen.
ändern
%Vor%bis
%Vor%oder
versuche mit Double[] array;
anstelle von double[] array;
Primitive Typen können nicht direkt von einem Komparator verglichen werden, da die Schnittstelle nur von Collator und RuleBasedCollator implementiert wird. Keine Wrapper-Klasse implementiert Komparator. Aufgrund dessen kann Compiler es nicht automatisch boxen.
Sehen Sie sich einfach in der Klasse Double an und Sie werden eine eingebaute Methode finden, die eine Vergleichsmethode bietet.
public static int compare(double d1, double d2)
Rückgabe: der Wert 0, wenn d1 numerisch gleich d2 ist; ein Wert kleiner als 0, wenn d1 numerisch kleiner als d2 ist; und ein Wert größer als 0, wenn d1 numerisch größer als d2 ist.
Umgekehrt: Multipliziere den gesamten Ausdruck mit -1;
Tags und Links java compare comparable compareto