比较2D数组中的2个元素

时间:2016-10-31 23:53:48

标签: java arrays arraylist

所以我试图比较2个元素的行/列位置,看看它们是否相邻。经过大量的搜索,我找不到我在SO上的类似问题上寻找的东西。

无论如何,我的主要问题只是关于我的一行代码的语法。所以这就是我所拥有的:

 private boolean adjacent(int row, int col) 
{
  boolean adjacent = true;
  Dot d2 = gameArray[row][col];
  Descriptor D2 = new Descriptor (row, col, d2);
  Descriptor D1 = list.get(list.size()-1);

  if (D1.row() == D2.row() && D1.col() == D2.col() +1) {
      adjacent = true;
  }
  return adjacent;
}

基本上我所看到的是if行。我想保持简单并检查元素D2的col位置是否为+/- 1.所以我想使用绝对值,但不是像ArrayList方法那样,只是像|1|那样简单的东西。

我如何将其实现到== D2.col()声明的if部分?

由于

1 个答案:

答案 0 :(得分:3)

一种方法是:

if (Math.abs(D1.row() - D2.row()) + Math.abs(D1.col() - D2.col()) == 1)

两个非负整数的总和为1,当且仅当它们中的一个等于1而另一个等于零时,恰好是你想要的。

编辑:现在我更仔细地阅读了你的问题,我意识到如果它们在相邻行的同一列中,你不会考虑相邻的两个元素。然后声明更简单:

if (D1.row() == D2.row() && Math.abs(D1.col() - D2.col()) == 1)