2017-07-03 5 views
-1

I ein Array von Distanzen berechnet (Entfernung) Methode die sowohl negative als auch positive Werte enthalten, sieht wie folgt ausSORT ARRAY positiv negativ Abstandswert

float num[] = {-123.81944, 34.56723, -133.40782};  

wenn

Arrays.sort(num); 
zu verwenden versucht

das Ergebnis ist

-123.81944  
-133.40782  
34.56723 

, die da falsch ist -1 33,40782 Lage ist näher als -123,81944

, wie ich das Array wie diese

-133.40782  
-123.81944  
    34.56723 
+0

Wenn Sie die Abstände von einem Referenzpunkt sortieren wollen, ich fühle mich Ihre erwartete Ergebnis nicht korrekt ist.Wenn wir eine Linie, einen Referenzpunkt und dann links den negativen Abstand und auf seiner rechten Seite den positiven Abstand betrachten, dann sollte die Sortierung auf dem absoluten Wert basieren. –

+0

, so dass Ihr Code wie gepostet nicht kompiliert wird. wenn einfache Änderungen vorgenommen werden, so dass das Ergebnis wie gewünscht zusammengesetzt wird - was genau ist Ihre Frage? –

Antwort

1

führen sortieren Wenn Sie float als Datentyp verwenden möchten, dann sollten Sie das Array wie folgt deklarieren. Andernfalls können Sie double als Datentyp verwenden, um das Hinzufügen eines Suffixes f zu den Nummern zu vermeiden.

float[] num = {-123.81944f, 34.56723f, -133.40782f}; 
// or, double[] num = {-123.81944, 34.56723, -133.40782}; 
Arrays.sort(num); 
System.out.println(Arrays.toString(num)); 

Ausgabe

[-133.40782, -123.81944, 34.56723] 

eine Live demo See.

-1

Für mich, mit einem Standard Java JRE funktioniert es wie (Sie) erwartet, aber ich musste die Zahlen in Float-Literale drehen. Ansonsten hat es nicht kompilieren:

float num[] = new float[] {-123.81944f, 34.56723f, -133.40782f}; 
Arrays.sort(num); 
for (int i = 0; i < num.length; i++) { 
    System.out.print(" " + num[i]); 
} 

druckt -133.40782 -123.81944 34.56723

1

Angenommen, es ist ein Array A enthält negative Zahlen Null und positive Zahlen. Sie müssen sie sortieren, wie würden Sie es tun. Natürlich würden Sie die natürliche Reihenfolge betrachten und als negative Zahlen sortieren, gefolgt von Null, gefolgt von positiven Zahlen. Dies ist, was Arrays.sort() tut.

Wenn Sie die Entfernungen von einem Referenzpunkt sortieren möchten, ist das erwartete Ergebnis nicht korrekt. Wenn wir eine Linie, einen Referenzpunkt und dann links den negativen Abstand und auf seiner rechten Seite den positiven Abstand betrachten, dann sollte die Sortierung auf dem absoluten Wert basieren.

Ihre Geschäftsanforderung besteht darin, eine benutzerdefinierte Sortierung durchzuführen. Damit eine Sortierung funktioniert, müssen Sie eine Logik zum Vergleich haben. Dafür bietet Java Comparator. Sie müssen Ihren Geschäftslogikvergleich für das Sortieren implementieren. [TIPP: Während des Vergleichs können Sie einfach den absoluten Wert vergleichen. Math.abs kann Ihnen helfen]

Floats enden mit f, so dass die nächsten f mit jedem Ihrer Array-Elemente besser sind.

Als Referenz können Sie eine weitere Frage im Zusammenhang sehen

How to sort an array of ints using a custom comparator?

Verwandte Themen