Wie man den Unterschied zwischen zwei Ganzzahlen
Ich versuche zu machen ein Programm, das verwendet Bereiche und jeder Bereich hat eine id (z.B.:1;1) und ich versuche, die Größe von einem festgelegten Bereich mit Vergleich von zwei ids, aber diese Methode gibt 1 zurück, als Größe.
//Pos1 = -2;3 Pos2 = 0;1
int x = Integer.valueOf(pos2.x).compareTo(pos1.x);
int y = Integer.valueOf(pos2.y).compareTo(pos1.y);
int size = Math.abs(x * y);
Also, wie kann ich diese Arbeit machen?
compareTo
gibt immer -1, 0 oder 1 je nach der gewünschten Reihenfolge der beiden Objekte. Nicht sicher, ob ich verstehe das problem, aber möchten Sie vielleicht stattdessen etwas tun, wie Math.abs(pos2.x - pos1.x)
zum Beispiel.InformationsquelleAutor letsgo00 | 2016-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Ergebnis ist 1, weil
compareTo()
gibt 0 zurück, wenn die Argumente gleich sind, -1, wenn das erste int ist kleiner als der zweite, und 1, wenn der zweite kleiner ist (Sie können mehr darüber Lesen Sie in der offiziellen docs).--> sollten Sie nicht verwenden diese Methode für diesen Zweck. Berechnung der Differenz statt:
InformationsquelleAutor Katharina
compareTo
soll nicht die Rückkehr der genaue Unterschied zwischen zwei Werten. Von die docs:Verwenden
danke! nur zur info, in der zweiten Zeile "Match" ist falsch .. das richtige Wort/die Klasse "Math"
vielen Dank, korrigiert!
InformationsquelleAutor f1sh
Zweck von Integer.compareTo ( ) nicht um die Differenz zwischen zwei Integer-Objekte. Sein Zweck ist, um angeben, die Reihenfolge zwischen zwei Integer-Objekten, wenn Sie sortiert werden Arrays.sort ( ) und Collections.sort( ).
Finden Sie den Unterschied in der folgenden Weise:
InformationsquelleAutor Sanjeev Saha
compareTo
zurück-1
wennpos2.x
ist kleiner alspos1.y
,0
wenn Sie identisch sind, und1
wennpos2.x
größer ist alspos1.y
.Diese stattdessen zu verwenden:
Wenn Sie möchten, dass die Abmessungen in einem bestimmten Bereich haben, können Sie subtrahieren pos2.x von pos1.x und pos2.y von pos1.y.
InformationsquelleAutor Shiro