我正在尝试制作一个使用区域的程序,每个区域都有一个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);
那么我该如何使这项工作?
compareTo
不应该返回两个值之间的确切差异。从文档中:
返回一个负整数,零或正整数,因为该对象小于,等于或大于指定的对象。
使用
int x = Math.abs(pos2.x-pos1.x);
int y = Math.abs(pos2.y-pos1.y);
int size = x * y;
结果是1在官方文档中)。
->您不应将此方法用于此目的。而是计算差异:
int x = pos2.x - pos1.x;
int y = pos2.y - pos1.y;
int size = Math.abs(x * y);
integer.compareto()的目的不是找到两个整数对象之间的区别。其目的是指定两个整数对象通过arrays.sort()或collections.sort()。
对两个整数对象之间的排序。您可能会以以下方式找到区别:
int x = pos2.x - pos1.x;
int y = pos2.y - pos1.y;
int size = Math.abs(x * y);
compareTo
如果pos2.x
小于pos1.y
,则0
,如果CC_7相同,则1
如果pos2.x
大于pos1.y
,则CC_8。
而是使用此:
int size = Math.abs((pos2.x-pos1.x)*(pos2.y-pos1.y));