【问题标题】:Searching a String[][] grid for an element and immediate surrounding ones在 String[][] 网格中搜索元素和直接周围的元素
【发布时间】:2018-02-22 17:24:21
【问题描述】:

这是我的网格的表示-

0 0 0 0 0 0
0 E 0 P 0 0
0 0 0 0 0 0
0 0 E 0 0 0
0 0 0 0 P 0
0 0 P 0 0 0

我的问题是,如果我选择某个点,我如何在直接区域(8 个元素)中搜索 E 或 P 的任何内容?

我目前拥有的搜索功能-

if (eventMap[x][y].equals("*")) {
  System.out.println("Nothing is there.");
if (eventMap[x][y].equals("E")) {
  System.out.println("There is a ship trail at that location.");
} else if (eventMap[x][y].equals("P"))
  System.out.println("There is a planet at that location.");

这是我在这里提出的第一个问题,如果有什么难看的地方,请见谅。

【问题讨论】:

  • ...通过选择这些点?老实说,不确定您还在寻找什么。
  • 通过选择该网格中的任何坐标。
  • 您可以通过编写一些代码来实现。向我们展示您的尝试。
  • 不要将代码放在注释中。 编辑问题并在那里添加代码,以澄清问题。
  • 直觉反应:你为什么要把"P"==比较?然后,我查看了您的其余代码,并意识到您正在以 正确 的方式进行字符串比较...

标签: java search multidimensional-array


【解决方案1】:

假设你在位置[i][j],紧邻的位置是[i-1][j-1][i-1][j][i-1][j+1][i][j-1][i][j+1][i+1][j-1][i+1][j][i+1][j+1]。如果您想避免一一检查,只需使用双循环遍历数组,其中 k 从 i-1 到 i+1 和 l 从 j-1 到 j+1 并得到[k][l],如果需要添加 if 以跳过案例 k == i && l == j 以删除中间的案例。显然,您还必须处理边缘情况。

【讨论】:

  • 我尝试过使用更多 if-else 语句,但它们似乎只是不起作用,也许我只是在乱七八糟地添加代码或其他东西
  • 您通过矩阵的外部代码应该通过两个 for 循环完成,然后在内部您需要检查 k 和 l 的上限和下限(如 kmin = i - 1 array.length - 1 : array.length - 1 : i + 1) 然后您可以使用循环来搜索您的具体案例并在找到它们时执行一些操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
相关资源
最近更新 更多