Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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_Search - Fatal编程技术网

Java 在二维数组中查找完整单词

Java 在二维数组中查找完整单词,java,arrays,search,Java,Arrays,Search,我有一项艰巨的任务。当stringBuilder单元格在二维数组中匹配时,我需要向它们写入单词。这意味着我必须找到完整的单词,避免重复的单元格。 为了更好地理解,我将附上一张黄色单元格中正确穿越的照片,其中红色单元格是错误的路径 结论如下:[0,2]->[1,2]->[2,2]->[2,3]->[2,4]->[3,4]->[5,4]->[5,3]->[5,2]->[5,1]->[4,1]->[4,0]->[5,0] 现在我的结论是:[5,0]->[4,0]->[4,1]->[4,2]->[3,2

我有一项艰巨的任务。当stringBuilder单元格在二维数组中匹配时,我需要向它们写入单词。这意味着我必须找到完整的单词,避免重复的单元格。 为了更好地理解,我将附上一张黄色单元格中正确穿越的照片,其中红色单元格是错误的路径

结论如下:[0,2]->[1,2]->[2,2]->[2,3]->[2,4]->[3,4]->[5,4]->[5,3]->[5,2]->[5,1]->[4,1]->[4,0]->[5,0] 现在我的结论是:[5,0]->[4,0]->[4,1]->[4,2]->[3,2]->[3,1]->[2,1]->[2,2]->[1,2]

我不明白故障在哪里以及如何修复,请帮助

我的代码:


发生这种情况的原因是,当从错误路径回溯时,indexForWord未设置正确,并且在您的情况下存在重复字符,这是T

else {
    for (int j = indexForWord; j >= 0; j--) {
        if (word.charAt(j) == oldChar) {
           indexForWord = j + 1;
           grid[positionY][positionX] = oldChar;
           break;
        }
}
相反,在所有4种情况下,只要在每次检查为假时后退一步就足够了:

else {
       grid[positionY][positionX] = oldChar;
       indexForWord--;
     }

同样,结果将是反向的[5,0]->[4,0]->[4,1]->[5,1]等等,因此您必须将其反向,或者找出另一种方法。

这是因为当从错误路径回溯时,indexForWord未设置正确,并且在您的情况下存在重复字符,这是T

else {
    for (int j = indexForWord; j >= 0; j--) {
        if (word.charAt(j) == oldChar) {
           indexForWord = j + 1;
           grid[positionY][positionX] = oldChar;
           break;
        }
}
相反,在所有4种情况下,只要在每次检查为假时后退一步就足够了:

else {
       grid[positionY][positionX] = oldChar;
       indexForWord--;
     }

此外,结果将是相反的[5,0]->[4,0]->[4,1]->[5,1]等,因此您必须将其反转或找出另一种方法。

除了Bahij所说的:

    private static int indexForWord = 1;
应使用0而不是1初始化

结合Bahij的解决方案,这将产生

[5, 0][4, 0][4, 1][5, 1][5, 2][5, 3][5, 4][4, 4][3, 4][2, 4][2, 3][2, 2][1, 2][0, 2]

不幸的是,我不能对他/她的答案发表评论,因为我没有足够的声誉。哈哈,除了Bahij所说的以外:

    private static int indexForWord = 1;
应使用0而不是1初始化

结合Bahij的解决方案,这将产生

[5, 0][4, 0][4, 1][5, 1][5, 2][5, 3][5, 4][4, 4][3, 4][2, 4][2, 3][2, 2][1, 2][0, 2]
不幸的是,我不能评论他/她的答案,因为我没有足够的声誉lol