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

新手上路,请多包涵

我正在尝试制作一个使用区域的程序,每个区域都有一个 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);

那么我怎样才能使这项工作呢?

原文由 letsgo00 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 812
2 个回答

结果为 1,因为 compareTo() 如果参数相等则返回 0,如果第一个 int 小于第二个则返回 -1,如果第二个更小则返回 1(您可以在 官方 阅读更多相关信息 文档)。

–> 您不应将此方法用于此目的。而是计算差异:

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

原文由 Katharina 发布,翻译遵循 CC BY-SA 3.0 许可协议

compareTo 不应该返回两个值之间的确切差异。从 文档

当此对象小于、等于或大于指定对象时,返回负整数、零或正整数。

利用

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

原文由 f1sh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题