java - 比较二维数组中的 2 个元素

标签 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| 之类的。

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

谢谢

最佳答案

一种方法是:

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

两个非负整数之和为 1 当且仅当其中一个等于 1 而另一个等于 0,这正是您想要的。

编辑:现在我更仔细地阅读了您的问题,我意识到如果两个元素位于相邻行的同一列中,您不会考虑相邻的两个元素。那么语句就更简单了:

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

关于java - 比较二维数组中的 2 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40352249/

相关文章:

java - 如何让 intellij 使用 gradle 构建目录而不是 out

javascript - 如何使用 lodash/underscorejs 拆分具有特定条件的对象的 javascript 数组

c# - 调整数组大小会调用 GC 吗?

java - java中ArrayList转Hashset

java - 在数组列表上使用分隔符

java - 如何在 Java 中并排打印行?

java - 我的 findCombos 方法不起作用,如何从 java 字符数组中删除字符

java - 为什么我在使用 "from javax.mail import *"时无法解析 jython 中的公共(public) java 对象?

java - 理解 list[i-1] 与 list[i]-1

java - CustomList<T extends A> 类型不匹配