I added a few more words to search, so my main method looks like this:
public static void main(String[] args) {
        int[][] wordSearch = new int[][]{
                {'f', 'd', 'e', 'r', 'l', 'k'},
                {'u', 's', 'a', 'm', 'e', 'o'},
                {'l', 'n', 'g', 'r', 'o', 'v'},
                {'m', 'l', 'p', 'r', 'r', 'h'},
                {'p', 'o', 'e', 'e', 'j', 'j'}
        };
        List<Word> words = detectAllWords(wordSearch, "home", "same", "gae", "oprek", "sgrj", "kov", "ore", "emas");
        /*
Expected result
home - (5, 3) - (2, 0) searchUpLeft
same - (1, 1) - (4, 1) searchRight
gae - (2, 2) - (2, 0) searchUp
oprek - (1, 4) - (5, 0) searchUpRight
sgrj - (1, 1) - (4, 4) searchDownRight
kov - (5, 0) = (5, 2) searchDown
ore - (4, 2) - (2, 4) searchDownLeft
emas - (4, 1) - (1, 1) searchLeft
         */
        for (Word w : words)
            System.out.println(w.toString());
    }
I've added the expected results of my new 'words' The output I'm getting is: home - (5, 3) - (2, 0) same - (1, 1) - (4, 1) gae - (2, 2) - (2, 0) oprek - (0, 0) - (0, 0) sgrj - (0, 0) - (0, 0) kov - (5, 0) - (5, 2) ore - (0, 0) - (0, 0) emas - (4, 1) - (1, 1) Clearly, the problem is with the following methods: searchUpRight searchDownRight searchDownLeft Cannot for the life of me see what it is though - please help