Java 如何根据单词的不同形式统计单词的出现次数单词的不同形式
我已经写了一段,怎么修改
public static void main(String [] sgrs){
/**
* 如:"1王235868asda17394利3@@89我0我2342";统计出每个字符出现的次数。
*/
String str="1王235868asda17394利3@@89我0我2342";
int[] count=new int[str.length()];//每个字符出现的次数
String b=new String();//存储去除重复之后的字符串
for(int i=0;i<str.length();i++){
if(!b.contains(String.valueOf(str.charAt(i)))){
b+=String.valueOf(str.charAt(i));
}
else{
for(int j=0;j<b.length();j++){
if(str.charAt(i)==b.charAt(j)){
count[j]++;
}
}
}
}
System.out.println("原字符串str:");
System.out.println(str);
//System.out.println(b);
for(int i=0;i<b.length();i++){
System.out.println(b.charAt(i)+":出现的次数:"+(count[i]+1));
}
}
另外,要将字符串按照空格分割成单词,然后对每个单词进行处理。
以下是一个基础的例子,该例子将根据空格来分割单词,并使用HashMap来统计每个单词的数量。这个例子并没有处理单词的不同形式,但是给出了基础的框架,你可以在此基础上添加词干提取的功能。
import java.util.HashMap;
import java.util.Map;
public class WordCount {
public static void main(String[] args) {
String str = "I am a student. He is a student. She is also a student.";
str = str.toLowerCase().replaceAll("[^a-z ]", ""); // 将非字母和非空格的字符替换为空
String[] words = str.split(" "); // 按空格分割字符串
Map<String, Integer> wordCount = new HashMap<>();
for (String word : words) {
wordCount.put(word, wordCount.getOrDefault(word, 0) + 1); // 计算每个单词的数量
}
for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
在这个例子中,用了Java的HashMap数据结构,这个数据结构可以快速地查找和插入元素。对于每个单词,将其数量存储在HashMap中,如果这个单词在HashMap中不存在,那么将其数量设为1,否则将其数量加1。