如何获得两个整数之间的差异

时间:2016-06-28 14:08:15

标签: java math compare

我正在尝试创建一个使用区域的程序,每个区域都有一个id(例如:1; 1),我试图通过比较两个id来获取指定区域的大小,但是这个方法返回1大小

 //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);

那么我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:6)

int x = Math.abs(pos2.x-pos1.x); int y = Math.abs(pos2.y-pos1.y); int size = x * y; 不应该返回两个值之间的确切差异。来自the docs

  

返回负整数,零或正整数,因为此对象小于,等于或大于指定对象。

使用

{{1}}

答案 1 :(得分:4)

结果为1,因为compareTo()如果参数相等则返回0,如果第一个int小于第二个int则返回-1,如果第二个int小于1则返回1(您可以在official docs)。

- >您不应该为此目的使用此方法。改为计算差异:

int x = pos2.x - pos1.x;
int y = pos2.y - pos1.y;
int size = Math.abs(x * y);

答案 2 :(得分:2)

Integer.compareTo()的目的不是找到两个Integer对象之间的区别。它的目的是指定两个Integer对象在按Arrays.sort()或Collections.sort()排序时之间的顺序。

您可以通过以下方式找到差异:

int x = pos2.x - pos1.x;
int y = pos2.y - pos1.y;
int size = Math.abs(x * y);

答案 3 :(得分:1)

如果compareTo小于-1,则{p> pos2.x将返回pos1.y0如果相同则返回1pos2.x如果pos1.y 1}}大于int size = Math.abs((pos2.x-pos1.x)*(pos2.y-pos1.y));

请改用:

A   D1      B    D2     C         D3    E
1   action  0.5  action 0.35    null    a
2   0       0.75    0   0.45    action  b
3   action  1    action 0.85    action  c