Лучший способ конвертировать 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);
Другие вопросы по тегам