当前位置: 代码迷 >> Eclipse >> java 统计单词个数 结果不对 不知道为什么,该怎么解决
  详细解决方案

java 统计单词个数 结果不对 不知道为什么,该怎么解决

热度:77   发布时间:2016-04-23 14:01:36.0
java 统计单词个数 结果不对 不知道为什么
import java.util.HashMap;  
import java.util.Map;  
import java.util.Map.Entry;  
import java.io.*;
//import java.util.*;

public class TestClass {  
public static void main(String[] args) throws Exception {  
// 源字符串  
 
// Map hashMap = null; 
BufferedReader infile = null; 
//StringTokenizer st = null; 
String filename = "c:\\1.txt"; 
String sourceStr; 
String f = null; 
//打开一篇文章,名字是 1.txt
infile = new BufferedReader(new FileReader(filename)); 
while ((sourceStr= infile.readLine()) != null) { 
f += sourceStr; //都出整篇文章,存入String中。
 

// hashMap = new HashMap(); 

// 分割字符串  
String[] strs = f.split(";| |,");  
 
// 用户记录字符出现次数的Map对象  
Map<String, Integer> countMap = new HashMap<String, Integer>();  
// 循环记录每个字符串出现的次数  
for (String str : strs) {  
str = str.trim(); //应该要去掉左右边的空格, 否则统计出现不正确  
countMap.put(str, countMap.containsKey(str) ? countMap.get(str) + 1 : 1); // 如果存在,就获得当前值,然后+1放入map;不存在,放入1
}  
 
// 打印出各字符出现的次数  
for (Entry<String, Integer> entry : countMap.entrySet()) {  
System.out.println("字符串:" + entry.getKey() + " 出现次数:" + entry.getValue());  
}  
}  
}  

 我的1.txt内容为:it is it is it si si si si si big big big sit sit you
输出结果的时候老是有一个null还有空格的统计
字符串:sit 出现次数:2

结果如下:
字符串: 出现次数:2
字符串:is 出现次数:2
字符串:it 出现次数:3
字符串:you 出现次数:1
字符串:big 出现次数:3
字符串:null 出现次数:1
字符串:si 出现次数:5
 

------解决方案--------------------
你的f=null

下边直接f+=了 就是f=null+it......
所以f=nullit is it is it si si si si si big big big sit sit you


------解决方案--------------------
String f = null;
改成
String f = "";
------解决方案--------------------
BufferedReader读文件的时候,一定要保证文件结尾是一个回车符,否则可能出现挂机等待。
------解决方案--------------------
是因为你的1.txt中有连续两个空格,用空格分隔时,会有一个分隔成str。

Java code
import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.io.*;public class TestClass {    public static void main(String[] args) throws Exception {        // 源字符串        BufferedReader infile = null;        String filename = "c:\\1.txt";        String sourceStr;        String f = "";        // 打开一篇文章,名字是 1.txt        infile = new BufferedReader(new FileReader(filename));        while ((sourceStr = infile.readLine()) != null) {            f += sourceStr; // 都出整篇文章,存入String中。        }        // 分割字符串        String[] strs = f.split(";| |,");        // 用户记录字符出现次数的Map对象        Map<String, Integer> countMap = new HashMap<String, Integer>();        // 循环记录每个字符串出现的次数        for (String str : strs) {            str = str.trim(); // 应该要去掉左右边的空格, 否则统计出现不正确            if(str.length()==0){continue;}            countMap.put(str, countMap.containsKey(str) ? countMap.get(str) + 1                    : 1); // 如果存在,就获得当前值,然后+1放入map;不存在,放入1        }        // 打印出各字符出现的次数        for (Entry<String, Integer> entry : countMap.entrySet()) {            System.out.println("字符串:" + entry.getKey() + " 出现次数:"                    + entry.getValue());        }    }}
  相关解决方案