2014-02-14 57 views
-5

我有一个已经排序字符串数组命名ARR和假设我进入了一句爪哇 - 词的相邻比较和计算频率

你好,你好怎么我

期望的输出是

hello 2 
how 2 
me 1 
in 1 
to 1 

以下是我想要的国家t it

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; 
     } 
    } 
} 

但这不行,请帮忙?

+2

请问您能详细说明一下吗?哪些数组已排序或需要排序? – Juvanis

+1

你为什么转发? – Brian

+0

它已经排序,所以我比较相邻字符串的频率 – Sigma

回答

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; 
     } 
    }  
}