繁体   English   中英

如何在没有 hashmap 或数组的情况下在 Java 中创建词频计数器?

[英]How do you create a word frequency counter in Java without hashmap or arrays?

我一直在尝试用 Java 创建一个程序,该程序输出在字符串中找到的每个单词及其出现的次数。 我一直试图在不使用任何数组或哈希图的情况下,只使用字符串操作方法和字符串标记器来做到这一点,但我似乎无法理解逻辑。

这是我到目前为止所拥有的。

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()

在循环结束时,标记器已被内部循环耗尽,因此您应该重新初始化一个新的,尤其是在您已经更改了input字符串之后。

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);
}

注意:正如Andreascoolioasjulio 所提到的,不鼓励使用StringTokenizer (更多信息请点击此处)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM