Mac*_*Iam 2 java arrays string return
我基本上想要搜索字符串的频率.例如,如果我传入单词"I",那么下一句中单词的频率:" 我去了海滩,我看到三个人"应该是2.我已经构建了这样的方法一个文本(任意长度),由白色空格将其分割成一个数组,并循环遍历数组,搜索每个索引是否与单词匹配.然后,我递增频率计数器并将数字作为字符串返回.这是方法:
private int freq() {
String text = "I went to the beach and I saw three people";
String search = "I";
String[] splitter = text.split("\\s+");
int counter = 0;
for (int i=0; i<splitter.length; i++)
{
if (splitter[i]==search)
{
counter++;
}
else
{
}
}
return counter;
}
}
Run Code Online (Sandbox Code Playgroud)
这不在方法之外:
String final = Integer.toString(freq());
System.out.println(final);
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个时,我的结果就是0.我不知道我做错了什么.
编辑:你们都是对的!多么浪费一个问题:(.
用equals而不是==
if (text[i].equals(search) )
{
counter++;
}
Run Code Online (Sandbox Code Playgroud)
更好的解决
使用地图以Map<String,Integer> 频率映射单词.
String [] words = line.split(" ");
Map<String,Integer> frequency = new HashMap<String,Integer>();
for (String word:words){
Integer f = frequency.get(word);
//checking null
if(f==null) f=0;
frequency.put(word,f+1);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以找到一个特定的单词:
frequency.get(word)
Run Code Online (Sandbox Code Playgroud)