[英]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,但是由于i
和k
为0,因此现在将单词的第二个字母与a[0][0]
。 那不太可能匹配。 它只对单词以相同字母开头的单词进行两次。
最后,我确实设法获得了StringIndexOutOfBoundsException
,即通过在包含a
, b
, c
的行中搜索aa
。 第二次通过最里面的循环c
是2,因此您尝试取出长度为2的单词的索引2和3之间的子字符串。
您需要进行一些修复。 好好工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.