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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 官珺伟 高级黑马   /  2014-4-20 12:18  /  936 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 官珺伟 于 2014-4-20 21:59 编辑

取出一个字符串中字母出现的次数。如:字符串:"abcde%^kka27qoq" ,输出格式为:a(2)b(1)k(2)...

2 个回复

倒序浏览
本帖最后由 anqi 于 2014-4-20 12:41 编辑
  1. public class Convert {      
  2.     public static void main(String[] args) {  
  3.         String str = "abcde%^kka27qoq";
  4.         CountChar(str);  
  5.     }   
  6.     private static void CountChar(String str) {  
  7.         char[] c = str.toCharArray();  //转换为字符数组
  8.         System.out.println(c);  
  9.         Map<Character,Integer> map = new LinkedHashMap<Character,Integer>();  //建立一个Map集合(因为map集合key相同会覆盖)
  10.         for (int i = 0; i < c.length; i++) {   //变量char[]数组
  11.             if ((c[i] <= 90 && c[i] >= 65)||(c[i]>=97&&c[i]<=112)) {   //判断只取字母
  12.                     //往集合里面添加
  13.                 if (!(map.keySet().contains(c[i]))) {  
  14.                     map.put(c[i], 1);  //第一次出现就添加一次
  15.                 } else {  
  16.                     map.put(c[i], map.get(c[i]) + 1);  //多次出现就取出出现的次数在加1后填入
  17.                 }  
  18.             }  
  19.         }  
  20.         //将集合里面的内容转换为字符串
  21.         StringBuilder sb = new StringBuilder();  
  22.         Iterator<Map.Entry<Character,Integer>> it = map.entrySet().iterator();  
  23.         while (it.hasNext()) {  
  24.             Map.Entry<Character,Integer> entry = it.next();  
  25.             sb.append(entry.getKey() + "(" + entry.getValue() + ")");  
  26.         }  
  27.         System.out.println(sb);  
  28.     }  
  29. }  
复制代码
回复 使用道具 举报
取出一个字符串中字母出现的次数。如:字符串:"abcde%^kka27qoq" ,输出格式为:a(2)b(1)k(2)...
  • package itheima.day16;  
  •   
  • import java.util.Iterator;  
  • import java.util.Map;  
  • import java.util.Set;  
  • import java.util.TreeMap;  
  •   
  • //练习:获取一个字符串中字母出现的次数,希望打印结果为:a(1)b(2)...  
  • //思路:1、将字符串转换成字符数组,因为要对每一个字母进行操作;  
  • //      2、定义一个map集合,因为打印结果的字母有顺序,TreeMap;  
  • //      3、遍历字符数组,将每一个字母作为键去查map集合,如果返回null,  
  • //          存入;如果不是null,则对应的值加1。  
  • //      4、将map集合中的数据变成指定的字符串形式返回。  
  • public class MapTest3 {  
  •   
  •     public static void main(String[] args) {  
  •          
  •         String str ="54653gfghfhvfagfgafsdg";  
  •         System.out.println(charCount(str));  
  •     }  
  •       
  •     public static String charCount(String str){  
  •          
  • //      1、将字符串转成字符数组  
  •         char[] chs = str.toCharArray();  
  •          
  • //      2、键值对,需排序,TreeMap  
  •         TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();  
  • //      3、遍历字符数组,将每个字符、出现次数 存入到TreeMap集合中  
  •         int count =0;  
  •         for(int x=0;x<chs.length;x++){     
  •             if(!(chs[x]>='a'&& chs[x]<='z' || chs[x]>='A'&&chs[x]<='Z'))//非字母,不存  
  •                 continue;  
  •             Integer value = tm.get(chs[x]);  
  •             if(value!=null)  
  •                 count = value;  
  •             count++;  
  •             tm.put(chs[x], count);  
  •             count=0;  
  •         }  
  •          
  • //      4、取出TreeMap集合中的元素,存入到StringBuilder容器中  
  •         StringBuilder sb = new StringBuilder();  
  •          
  •         Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();  
  •         Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();  
  •         while(it.hasNext()){  
  •             Map.Entry<Character, Integer> me = it.next();  
  •             Character ch = me.getKey();  
  •             Integer value = me.getValue();  
  •             sb.append(ch+"("+value+")");  
  •         }  
  • //      5、以字符串形式返回  
  •         return sb.toString();  
  •     }  
  • }  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马