Лучший способ конвертировать 1D String Array в 2D Char Array в Java (Eclipse)
Для Игры Поиска Слов в Java, я прошу пользователя ввести столько слов, сколько они захотят (они введут один 'q', если они захотят прекратить добавлять больше слов), и этот ввод сохраняется в Списке Массивов, который затем преобразуется в 1D массив под названием words.
Затем я вызываю метод main, чтобы начать игру. Вот фрагмент кода:
System.out.println("Grid of the game");
for(char[] j : letterGrid) {
System.out.println(j);
}
System.out.println("Search for these words...\n");
for(String j : words) {
System.out.print(j + ", ");
}
System.out.print("Enter the Word: ");
String word = br.readLine();
System.out.print("Enter Row Number: ");
int row = Integer.parseInt(br.readLine());
//matching the word using regex
Pattern pattern = Pattern.compile(word, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(letterGrid[row-1]);
letterGrid - это 2D Char Array, но в строке, где он говорит: Matcher matcher = pattern.matcher(letterGrid[row-1]);
происходит ошибка, и она говорит: The method matcher(CharSequence) in the type Pattern is not applicable for the arguments.
Я попытался изменить свою программу и превратить letterGrid в массив 1D String, и он отлично работает для этого, но не для массива 2D-символов. Я заполняю letterGrid случайными буквами и пользовательскими словами (по горизонтали, вертикали или диагонали. Нет назад).
Я застрял в этом, и в настоящее время я ищу способы решить мою проблему, но я решил, что я мог бы также спросить здесь, так как люди здесь дают хорошие советы и предложения. Любая помощь будет оценена!
1 ответ
Единственный приемлемый аргумент для matcher - это строка, и самый быстрый способ преобразования символа в строку:
char c = 'a';
String s = String.valueOf(c);
Итак, вы можете сделать это:
String s = String.valueOf(letterGrid[row-1]);
Matcher matcher = pattern.matcher(s);