A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lanbuohan 中级黑马   /  2013-7-13 18:05  /  1634 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-14 11:04 编辑

在一个txt文件中,统计每个字符出现的次数并输出,求解

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

6 个回复

倒序浏览
先创建Map集合,集合以字符为key,字符出现次数为value.可以用字符流去读文件,读一个字符判断下该字符是否在集合中,不是的就把该字符作为key,1作为value存入。已存在集合中的话,就获取该key的value然后将value加1重新存入集合。
回复 使用道具 举报
先定义一个 map类型的集合,键k用来存储文件中的字符,值v用来存储此字符出现的次数。 用字符流,读取文件中的一个字符,判断如果 集合的 键k 包含此字符,那么这个键对应的值加1,如果不包含,将此字符(k)与1(v)存入集合。
回复 使用道具 举报
上面的都是高手!
回复 使用道具 举报
还没学到啊……
回复 使用道具 举报
要得到每个字母和对应的次数,有映射关系,用map集合。
键用来保存字符,值用来保存该字符出现的次数,遍历txt中的字符,如果map集合中没有该字母,将该字母和 1 (这个字母出现一次)存入map集合中,如果字母在集合中有,将该键对应的值加 1 然后再次存入map集合中,最后将集合中的元素输出即可。
如果想让输出的字母有序,可以用treemap集合。
回复 使用道具 举报
把下面的代码稍加改造就能如你所愿了

//TreeMap的特点:
//如果已经有a这个键,并对应某这个值;再往里存a这个键,但对应的值变了,
//那么后存进来的会把前一个覆盖掉。
//我们可以利用TreeMap的这些小特点去判断 某个字符串当中有多少个不重复的字符,如果重复了就判断重复了 多少,下面的代码就可以实现。
import java.util.*;
class  MapTest3
{
public static void main(String[] args)
{
  charCount("aabfcdabcdfa");
}
public static void charCount(String str)//用于判断str这个字符串变量中有多少个不同
{ //的字符,每个字符有多少个是相同的。
  char[]chs=str.toCharArray();
  
  TreeMap<Character,Integer>tm=new TreeMap<Character,Integer>();
  
  for(int x=0;x<chs.length;x++)
  {
    Integer value=tm.get(chs[x]);
    //System.out.println(tm);
    if(value==null)
    {
     tm.put(chs[x],1);//判断每一个字符进来时TreeMap中是不是已经存在。
    }                    //如果不存在就把它存进来
    else
    {
     value=value+1;
     tm.put(chs[x],value);//如果存在就让value值加1在重新存进来
    }
  }
  System.out.println("一共有"+tm.size()+"不同的字符");
  System.out.println("这些字符分别是"+tm);
  
}
}

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马