你如何在 Java 中创建一个没有 hashmap 或数组的词频计数器?
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);
}
注:如Andreas和coolioasjulio提到的是使用StringTokenizer
气馁(更多关于它here)。
我一直在尝试在 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);
}
注:如Andreas和coolioasjulio提到的是使用StringTokenizer
气馁(更多关于它here)。