我一直在尝试用 Java 创建一个程序,输出字符串中找到的每个单词以及它们出现的次数。我一直试图在不使用任何数组或 HashMap 的情况下执行此操作,而仅使用字符串操作方法和字符串标记生成器,但我似乎无法理解逻辑。
这是我到目前为止所拥有的。
Scanner sc=new Scanner(System.in);
String input="";
int count=1;
String word="";
System.out.println("Enter your paragraph.");
input=sc.nextLine();
StringTokenizer st=new StringTokenizer(input);
while(st.hasMoreTokens()){
word=st.nextToken();
while(st.hasMoreTokens()){
if(st.nextToken()==word){
count++;
}
}
System.out.println(word+": "+count);
input=input.replaceAll(currentToken," ")
count=1
}
我当前收到的输出是(输入的第一个单词)=0。
对此有何帮助或建议或任何可以引导我朝正确方向发展的事情?
最佳答案
你们已经很接近了。但结果 0
与您发布的代码不匹配,它是 1
,但即使出现更多次。这是因为您在 if
中使用了 ==
而不是 .equals()
。
在循环结束时,标记生成器已被内部循环耗尽,因此您应该重新初始化一个新标记生成器,特别是在您更改了输入
字符串之后。
StringTokenizer st = new StringTokenizer(input);
while (st.hasMoreTokens()) {
word = st.nextToken();
while (st.hasMoreTokens()) {
if (st.nextToken().equals(word)) {
count++;
}
}
System.out.println(word + ": " + count);
input = input.replaceAll(word, "");
count = 1;
st = new StringTokenizer(input);
}
注意: 正如 Andreas 和 coolioasjulio 提到的那样,不鼓励使用 StringTokenizer
(更多相关信息 here ) .
关于java - 如何在没有 HashMap 或数组的情况下用 Java 创建词频计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880666/