簡體   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