java - 如何在没有 HashMap 或数组的情况下用 Java 创建词频计数器?

标签 java stringtokenizer

我一直在尝试用 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);
}

注意: 正如 Andreascoolioasjulio 提到的那样,不鼓励使用 StringTokenizer (更多相关信息 here ) .

关于java - 如何在没有 HashMap 或数组的情况下用 Java 创建词频计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880666/

相关文章:

java - 调用方法后出现 NoSuchElement 异常

java - 整数不相加

java - 如何在Eclipse中快速查找/切换到调试当前指令指针

java - 如何在 OpenNLP 中训练 Tokenizer?

Java stringtokenizer 赋值问题

java - 尝试对字符串进行标记化时出现 NumberFormatException

java - Activity 未显示?

android - StringTokenizer 获取第三个元素

java - Apache StrTokenizer 如何转义字符串文字中的引号和逗号

java - ADB命令无法识别