[英]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.