黑马程序员技术交流社区

标题: 求解,想不明白 [打印本页]

作者: lanbuohan    时间: 2013-7-13 18:05
标题: 求解,想不明白
本帖最后由 杨兴庭 于 2013-7-14 11:04 编辑

在一个txt文件中,统计每个字符出现的次数并输出,求解
作者: 王靖远    时间: 2013-7-13 18:14
先创建Map集合,集合以字符为key,字符出现次数为value.可以用字符流去读文件,读一个字符判断下该字符是否在集合中,不是的就把该字符作为key,1作为value存入。已存在集合中的话,就获取该key的value然后将value加1重新存入集合。
作者: 禾呈    时间: 2013-7-13 18:15
先定义一个 map类型的集合,键k用来存储文件中的字符,值v用来存储此字符出现的次数。 用字符流,读取文件中的一个字符,判断如果 集合的 键k 包含此字符,那么这个键对应的值加1,如果不包含,将此字符(k)与1(v)存入集合。
作者: stormdzh    时间: 2013-7-13 18:25
上面的都是高手!
作者: 一木榜公    时间: 2013-7-13 18:36
还没学到啊……
作者: 花心々小土豆    时间: 2013-7-13 19:15
要得到每个字母和对应的次数,有映射关系,用map集合。
键用来保存字符,值用来保存该字符出现的次数,遍历txt中的字符,如果map集合中没有该字母,将该字母和 1 (这个字母出现一次)存入map集合中,如果字母在集合中有,将该键对应的值加 1 然后再次存入map集合中,最后将集合中的元素输出即可。
如果想让输出的字母有序,可以用treemap集合。
作者: 左手神刀    时间: 2013-7-13 22:57
把下面的代码稍加改造就能如你所愿了

//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);
  
}
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2