-7

谁能给我这个方法和任何问题的简要解释。我认为它是输入少于 5 个单词的行并在制表符、换行符等上拆分行,然后进行比较以查找输入行中单词的重复。

public static void findNeedles(String haystack, String[] needles){
  if(needles.length > 5){
      System.err.println("Too many words!");
  }

  else{
      int[] countArray = new int[needles.length];
      for(int i = 0; i < needles.length; i++){
          String[] words = haystack.split("[ \"\'\t\n\b\f\r]", 0);
          for(int j = 0; j < words.length; j++){
              if(words[j].compareTo(needles[i]) == 0){
                  countArray[i]++;
        }
    }
      }
      for (int j = 0; j < needles.length; j++) {
          System.out.println(needls[j] + ": " + countArray[j]);
      }
  }
}
4

3 回答 3

3

您的函数有两个参数,haystack一个字符串和needles一个字符串数组。

它首先检查 的大小needles是否大于 5。如果是,则打印“错误”并随后退出。

如果不是,它会将haystack字符串拆分为多个字符(包括单引号和双引号、制表符、换行符、单词边界、换页符和回车符)到一个名为words.

每个“针”(阵列的元素needles)与阵列的每个元素进行比较words,如果遇到“针”作为words阵列的元素,则相应针的“计数器”递增。

搜索后,每根针都会显示出来,以及它在大海捞针中出现的次数。

然后函数退出。

于 2012-11-28T20:56:15.500 回答
1

它需要两个输入,一个字符串和一个最多包含 5 个字符串的数组。

它查看字符串,将每个单词与数组中的每个单词进行比较,并计算匹配项。

它打印出在字符串中找到数组中每个单词的次数。

于 2012-11-28T20:51:57.337 回答
0

该方法计算“干草堆”文本中“针”字的数量,最多可查找 5 个字。

您可以改进的一件事是将文本的拆分移动到外循环之外。

另一种可能性是通过使用针作为分隔符来拆分干草堆,从而为您count + 1提供文本片段,从而完全摆脱内部循环。

于 2012-11-28T20:56:27.903 回答