Простой поиск слов в массивах 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;
}