Java 给定字符串中最常出现的单词

Java 给定字符串中最常出现的单词,java,Java,我正在试图找到给定字符串中出现次数最多的单词。我的方法是在直接获取字符串数组时正确工作,但在获取字符串并将其转换为字符串数组时,它无法正常工作。请帮我找出逻辑上的错误 我使用HashMap解决这个问题 import java.util.*; 公共类查找MOSTOCCURENCEWORD SIVENSTRING{ 静态字符串occurrenceofwords(字符串[]arr) { HashMap hs=新的HashMap(); for(int i=0;i值) { value=m.getValue

我正在试图找到给定字符串中出现次数最多的单词。我的方法是在直接获取字符串数组时正确工作,但在获取字符串并将其转换为字符串数组时,它无法正常工作。请帮我找出逻辑上的错误

我使用HashMap解决这个问题

import java.util.*;
公共类查找MOSTOCCURENCEWORD SIVENSTRING{
静态字符串occurrenceofwords(字符串[]arr)
{
HashMap hs=新的HashMap();
for(int i=0;i值)
{
value=m.getValue();
key=m.getKey();
}
}
返回键;
}
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
字符串str=sc.next();
字符串str1[]=str.split(\\s+);
字符串arr[]={“嗨”、“嗨”、“嗨”、“你好”、“嗨”};//嗨
系统输出打印LN(发生词(str1));
}
}
预期输出:
hi

String arr[] = {  "hey","hi","hi","hello","hi" };//hi as input.

但是,当输入为字符串并将其拆分为字符串数组时,我没有得到正确的输出,即hi。

我执行了您的代码,您的逻辑是正确的,但使用时有一个错误

String str=sc.next();
它只读取字符串中的第一个标记,即“Hey”。您应该使用`

String str=sc.nextLine();

试试
String str=sc.nextLine()
要扩展@johnnymapp的建议,Scanner.next()方法的文档说明:查找并返回来自此Scanner的下一个完整标记。因此,通过使用
next()
,您只能检索第一个单词<另一方面,code>nextLine(),返回用户输入的enter
字符串。谢谢,@JohnyMoop和Zepher。现在我的代码运行良好。