我有已排序的字符串数组,名为 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;
}
}
}
但这不起作用,请帮帮忙?
答案 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;
}
}
}