在Java(Eclipse)中将1D字符串数组转换为2D Char数组的最佳方法

时间:2019-01-21 22:51:57

标签: java string multidimensional-array char wordsearch

对于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是2D字符数组,但在其行上显示: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 char数组。我用随机字母和用户单词(水平,垂直或对角线,不向后)填充letterGrid。

我一直坚持下去,目前正在寻找解决问题的方法,但我想我也可以在这里提出问题,因为这里的人会提供很好的建议。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

匹配器唯一可接受的参数是字符串 和 将char转换为字符串的最快方法是:

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

所以,您可以这样做:

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