Лучший способ конвертировать 1D String Array в 2D Char Array в Java (Eclipse) - PullRequest
0 голосов
/ 22 января 2019

Для Игры Поиска Слов в Java, я прошу пользователя ввести столько слов, сколько они захотят (они будут вводить один 'q', если они хотят прекратить добавлять больше слов), и этот ввод сохраняется в Список массивов, который затем преобразуется в одномерный массив с именем 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 - это двумерный массив символов, но в строке, где говорится: Matcher matcher = pattern.matcher(letterGrid[row-1]); происходит ошибка, и в ней говорится: The method matcher(CharSequence) in the type Pattern is not applicable for the arguments. Я попытался изменить свою программу и превратить letterGrid в массив 1D String, и он работает нормально для этого, но не для двумерного набора символов. Я заполняю letterGrid случайными буквами и пользовательскими словами (по горизонтали, вертикали или диагонали. Нет назад).

Я застрял в этом, и в настоящее время я ищу способы решить мою проблему, но я решил, что я мог бы спросить и здесь, поскольку люди здесь дают хорошие советы и предложения. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 22 января 2019

единственный приемлемый аргумент для matcher - строка & самый быстрый способ преобразовать символ в строку:

char c = 'a';
String s = String.valueOf(c);  

Итак, вы можете сделать это:

String s = String.valueOf(letterGrid[row-1]);
Matcher matcher = pattern.matcher(s);
...