Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中水平、垂直和对角(两个方向)搜索二维数组_Java_Arrays_File_Search_2d - Fatal编程技术网

在Java中水平、垂直和对角(两个方向)搜索二维数组

在Java中水平、垂直和对角(两个方向)搜索二维数组,java,arrays,file,search,2d,Java,Arrays,File,Search,2d,我在写这个程序时遇到了困难。我在网上发现了许多类似的问题和解决方案,但它们并不是我想要的 有一个文本文件,我的程序读取并转换成一个字符2D数组 示例文本文件: HFELOJF ESFOIGD LSDIOGS LTDMGER OEROFFT SFDLKEG 然后我给它一个单词,比如“hello”,程序会打印出数组中是否存在该单词的天气。有点像单词搜索 我需要能够搜索水平,垂直和对角线。但在所有3种情况下,这个词也可以是倒转的 我从2个for循环开始,从左上角开始,一直到最后 在第二个for循环中

我在写这个程序时遇到了困难。我在网上发现了许多类似的问题和解决方案,但它们并不是我想要的

有一个文本文件,我的程序读取并转换成一个字符2D数组

示例文本文件:

HFELOJF
ESFOIGD
LSDIOGS
LTDMGER
OEROFFT
SFDLKEG
然后我给它一个单词,比如“hello”,程序会打印出数组中是否存在该单词的天气。有点像单词搜索

我需要能够搜索水平,垂直和对角线。但在所有3种情况下,这个词也可以是倒转的

我从2个for循环开始,从左上角开始,一直到最后

在第二个for循环中,我要处理3个while循环:水平、垂直和对角线文本。但是我才意识到如果这个词是反的,那就不行了。现在为了解决这个问题,我必须构造另外3个while循环来处理我的代码


我只是觉得这很重复,并且认为一定有一个更简单的方法。但我已经盯着这个问题好几个小时了,还没有想出一个更好的主意

如果我继续我所拥有的,我将有2个for循环和6个for循环,而第二个for循环中的循环是非常混乱、重复和额外的代码。有没有更好、更快、更有效的方法来解决这个问题


感谢所有我能得到的帮助和信息

如果您只想检查反向

String reverse = new StringBuffer(string).reverse().toString();

我会这样做的。把每个字母循环一下。假设字母是单词的起始字母或结束字母。因此,如果在“hello”的情况下不是“h”或“o”,则跳过它。然后检查每个字母的对角线、水平和垂直方向。另外,如果你觉得这整件事都很麻烦,你可以忽略它。只需搜索字母“h”,并确保您检查了该字母的所有方向。

如果您能找到一个
字符串
向前,将其反转,看看它是否有效。是的,这会起作用,但需要我进行另一个循环,并不断从数组中减去,看看它是否有效。我知道它是有效的,但它使代码加倍。我想看看是否有一种更简单的方法来处理这两种情况,向前和向后。“我只是觉得这很重复,并且认为一定有一种更简单的方法。”。有时,为了理解一个主题,家庭作业练习(我想这就是它)意味着繁重和重复。在本例中,主题是遍历2d数组。是的,这个问题很糟糕,但我相信在解决它的过程中你会想出很多办法,尽你所能写出所有的代码。如果你被卡住了,张贴你的代码,并清楚地解释你被卡住的地方和原因。我相信如果你这样做,你会得到更好的回应。非常感谢!这实际上帮了不少忙。我之前所做的是从原来的字符串中提取最后一个字母,然后反向工作,但这将把事情搞得一团糟。在您的帮助下,我能够真正简化代码。非常感谢。