Java - 相邻的比较和计算单词的频率

时间:2014-02-14 14:06:18

标签: java

我有已排序的字符串数组,名为 arr ,并假设我输入句子

  

你好,我是怎么回事

所需的输出

hello 2
how 2 
me 1 
in 1 
to 1

以下是我如何计算它

int counter = 1;
for(j1 = 0; j1 < arr.length; j1++){
   if(j1 + 1 < arr.length){
      if(arr[j1].equals(arr[j1 + 1])){
         counter++;
      } else {
         System.out.println(arr[j1] + " " + counter);
         counter = 1;
      }
   }
}

但这不起作用,请帮帮忙?

1 个答案:

答案 0 :(得分:1)

问题在于:

if(j1 + 1 < arr.length) {...}

你没有迭代整个数组;最后一个元素是不计数的。 如果不解释,这可能是一个快速解决方案:

    public static void main(String[] args) {

    String[] arr = { "hello", "how", "hello", "to", "how", "me", "in" };
    Arrays.sort(arr);

    int counter = 1;
    for (int j1 = 0; j1 < arr.length; j1++) {

        int j2 = j1 + 1;
        String next = (j2 < arr.length) ? arr[j2] : null;

        if (arr[j1].equals(next)) {
            counter++;
        } else {
            System.out.println(arr[j1] + " " + counter);
            counter = 1;
        }
    }       
}