простой поиск слов в массивах Java 2d - PullRequest
1 голос
/ 14 июня 2011

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

    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 Ответ

2 голосов
/ 14 июня 2011

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

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;
}
...