Kann compareTo (double) für den primitiven Typ double nicht aufrufen

8

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?

%Vor%     
Klausos Klausos 22.11.2013, 10:09
quelle

4 Antworten

15

Ersetze den Aufruf einer Instanzmethode compareTo durch den Aufruf von statische compare methode , so:

%Vor%

Damit können Sie Ihre double s in einem Array von Primitiven behalten und Autoboxing vermeiden, bevor Sie eine Instanzmethode aufrufen.

    
dasblinkenlight 22.11.2013, 10:13
quelle
1

für primitive Typen verwenden nicht compareTo , sondern == statt

Wenn Sie jedoch compareTo verwenden möchten, erstellen Sie einfach ein Double-Array

%Vor%     
RamonBoza 22.11.2013 10:14
quelle
1

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;

    
Prabhakaran 22.11.2013 10:11
quelle
0

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;

    
nimish parikh 06.03.2017 03:24
quelle

Tags und Links