我正在尝试创建一个使用区域的程序,每个区域都有一个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);
那么我怎样才能做到这一点?
答案 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.y
,0
如果相同则返回1
,pos2.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