Простой поиск слов в массивах Java 2d

Я начинающий, и мне было интересно, если кто-нибудь может сказать мне, что я делаю не так с этим поиском слов? я застрял при проверке каждой строки на наличие слова, указанного в формальном аргументе, в настоящее время он не выполняет каких-либо проверок любого рода, это базовый логический метод, который возвращает значение true, если слово найдено в строке массива. предполагая массив поиска слов прямоугольный

    public boolean checkRow( char[][] puzzle, String w)
{
    int counter = 0;
    boolean match = true;
    for ( int row = 0; row < puzzle.length; row++)
    {
        counter = 0;


        for ( int col = 0; col < puzzle[row].length; col++)
        {
            if ( counter <= w.length() )
            {
                char word = puzzle[row][col];


                if( w.charAt(counter) == word)
                {
                    match = true;
                    counter++;
                }
            }


            else if ((counter == w.length()) && (match == true))
            {
                return true;
            }


             else 
            {

                match = false;
                counter = 0;
            }



        }
    }


    return match;
}

1 ответ

Решение

Вот ваш код исправлен

public boolean checkRow(char[][] puzzle, String w) {
    int counter = 0;
    boolean match = true;
    for (int row = 0; row < puzzle.length; row++) {
        counter = 0;
        match = false;

        for (int col = 0; col < puzzle[row].length; col++) {
            if (counter < w.length()) {
                char word = puzzle[row][col];

                if (w.charAt(counter) == word) {
                    match = true;
                    counter++;
                } else {
                    match = false;
                    counter = 0;
                }

                if ((counter == w.length()) && (match == true)) {
                    return true;
                } 
            }
        }
    }
    return false;
}

но это не лучший способ сделать ваш чек, здесь гораздо более плавный и даже более быстрый (примерно в 5 раз, я бы его протестировал) код

public boolean checkRow2(char[][] puzzle, String w) {
    String rowStr = null;
    for(int row = 0; row < puzzle.length; row++) {
        rowStr = new String(puzzle[row]);
        if(rowStr.contains(w)) return true;
    }
    return false;
}
Другие вопросы по тегам