我正在尝试查找给定字符串中出现次数最多的单词。我的方法是,当我直接获取一个字符串数组,但是当我获取String并将其转换为字符串数组时,它无法正常工作。请帮助我找出我的逻辑错误。
我用HashMap解决了这个问题。
import java.util.*;
public class FindingmostOccurrencewordsinGivenString {
static String OccurreneceofWords(String [] arr)
{
HashMap<String,Integer> hs=new HashMap<String,Integer>();
for(int i=0;i<arr.length;i++)
{
if(hs.containsKey(arr[i]))
hs.put(arr[i], hs.get(arr[i])+1);
else
hs.put(arr[i], 1);
}
Set<Map.Entry<String, Integer>>set=hs.entrySet();
Integer value=0;
String key="";
for(Map.Entry<String, Integer>m:set)
{
if(m.getValue() > value)
{
value=m.getValue();
key=m.getKey();
}
}
return key;
}
public static void main(String[]args)
{
Scanner sc=new Scanner(System.in);
String str=sc.next();
String str1[]=str.split("\\s+");
String arr[] = { "hey","hi","hi","hello","hi" };//hi
System.out.println(OccurreneceofWords(str1));
}
}
预期输出:hi
当
时打印为trueString arr[] = { "hey","hi","hi","hello","hi" };//hi as input.
但是当以String形式输入并将其拆分为字符串数组时,我没有得到正确的输出,即hi。
答案 0 :(得分:1)
我执行了您的代码,您的逻辑是正确的,但使用会出现单个错误
String str=sc.next();
哪个仅读取字符串中的第一个令牌,即“嘿”,而不是您应该使用。`
String str=sc.nextLine();