Find word in two dimensional char array
Your code is indeed sub-optimal.

When looking at a task do not start writing some loops, but think about it is made up of simpler tasks.

A word is in a two-dimensional crossword grid if any of the below is True:


The word is in any of the rows.
The word is in any of the columns.
The word is in any of the diagonals.


So, the general outline of the method may be:

class WordGrid {
  public contains(String word) {
    return any(word in row for row in getRows())                ||
           any(word in column for column in getColumns())       || 
           any(word in diagonal for diagonal in getDiagonals())
   }
}


Now you just have to translate this pseudocode to real code and implement the three get methods and the problem will be solved.

This is my suggestion because:


The general idea can be understood at a glance, if the reader wants more details he can read the helper methods.
It is made of many small pieces, that may be reused and are simpler to write on their own.
It is general working, for any grid and word size.