Comment obtenir la différence entre deux nombres entiers
Je suis en train de faire un programme qui utilise les zones et chaque zone dispose d'un identifiant (par exemple:1;1) et je vais essayer d'obtenir la taille d'une zone spécifiée avec la comparaison de deux id, mais cette méthode retourne la valeur 1 que la taille.
//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);
Alors, comment puis-je faire ce travail?
compareTo
renvoie toujours -1, 0, ou 1, selon l'ordre désiré des deux objets. Pas sûr si je comprends le problème, mais vous pouvez au lieu de faire quelque chose comme Math.abs(pos2.x - pos1.x)
, par exemple.OriginalL'auteur letsgo00 | 2016-06-28
Vous devez vous connecter pour publier un commentaire.
Le résultat est 1, car
compareTo()
retourne 0 si les arguments sont égaux, -1 si le premier int est plus petite que la seconde et 1 si le second est plus petit (vous pouvez en lire plus à ce sujet dans le officiel docs).--> Vous ne devez pas utiliser cette méthode pour ce but. Calculer la différence de la place:
OriginalL'auteur Katharina
compareTo
n'est pas censé renvoyer l'exacte différence entre les deux valeurs. De les docs:Utilisation
merci! juste pour info, dans la deuxième ligne, de "Match" est faux .. le mot correct/la classe est "Mathématiques"
merci, corrigé!
OriginalL'auteur f1sh
But de Entier.compareTo ( ) n'est pas de trouver la différence entre deux Entiers objets. Son but est de préciser l'ordre entre deux Entiers d'objets lorsqu'ils sont triés par des Tableaux.sort ( ) ou des Collections.sort( ).
Vous pouvez trouver la différence dans l'une des manières suivantes:
OriginalL'auteur Sanjeev Saha
compareTo
sera de retour-1
sipos2.x
est plus petit quepos1.y
,0
si elles sont les mêmes, et1
sipos2.x
est plus grand quepos1.y
.Utiliser ce lieu:
Si vous voulez les dimensions d'une certaine zone, vous pouvez soustraire pos2=.x par pos1.x et pos2=.y en pos1.y.
OriginalL'auteur Shiro