繁体   English   中英

Java wordsearch方法,搜索给定的二维数组

[英]Java wordsearch method, searching given 2d array

我正在尝试将一个单词传递给我的findWord方法,该方法检查表示该单词的stype String [] []“ a”的二维数组。 行和列是“ a”的尺寸。 我不是在检查对角线或反向,而只是向前。 我相信,即使不是全部,我的逻辑几乎都是正确的,但是我认为我遇到了界线错误。 没有引发任何错误,但是代码在随机情况下应返回true,因此返回false只是无法正常工作。 代码编译并运行良好。 (即检查过去的列数)

public boolean findWord(String word)  {
    int cL = column;
    for(int i = 0; i < row; i++) {
        for(int j = 0; j < column; j++) {
            if(a[i][j].equals(word.substring(0,1))) {
                int c = 1;
                int parameter = j + word.length();
                if(parameter <= cL) {
                    for(int k = j; k < parameter; k++) {
                        if(!a[i][k].equals(word.substring(c,c+1)))
                            return false;
                        c++;
                    }
                    return true;
                }
            } else {
                return false;
            }
        }
    }
    return true;
}

我已经运行了一些测试用例。 我还没有发现尽管单词在数组中但您的方法仍返回true的情况。

我在您的代码中看到的缺陷是:

您开始寻找a[0][0] 如果在此找到的字符串不等于单词的第一个字母,则无需进一步查找即可立即返回false

假设单词的第一个字母与a[0][0]匹配。 现在将c设置为1,但是由于ik为0,因此现在将单词的第二个字母与a[0][0] 那不太可能匹配。 它只对单词以相同字母开头的单词进行两次。

最后,我确实设法获得了StringIndexOutOfBoundsException ,即通过在包含abc的行中搜索aa 第二次通过最里面的循环c是2,因此您尝试取出长度为2的单词的索引2和3之间的子字符串。

您需要进行一些修复。 好好工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM