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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

jsczymm

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

本帖最后由 jsczymm 于 2015-8-23 00:15 编辑

大家帮我看看我这代码的问题在哪?


QQ图片20150823001144.png (122.24 KB, 下载次数: 2)

Demo

Demo

5 个回复

倒序浏览
本帖最后由 jsczymm 于 2015-8-23 00:16 编辑

输出结果:黑化肥发黑不发灰,灰化肥发灰不发黑灰1        化1       
不1       
肥1       
黑1       
,1       
发1

回复 使用道具 举报
  1. package com.itheima.test;

  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Set;
  5. import java.util.TreeMap;


  6. public class FindStringTimes {

  7.     public static void main(String[] args) {

  8.         String str = "黑化肥发黑不发灰,灰化肥发灰不发黑灰";
  9.         //将字符串转换成字符数组
  10.         char[] chs = str.toCharArray();
  11.         //定义一个Map集合,存储数据,键为字符,值为出现次数
  12.         Map<Character, Integer> map = new TreeMap<Character, Integer>();
  13.        
  14.         //遍历数组,
  15.         for (int i = 0; i < chs.length; i++) {
  16.             int count = 1;//定义初始化出现次数
  17.             Integer value = map.get(chs[i]);//获取字符键对应的值
  18.             if (value != null) {//存储时,如果值(出现次数)不为空
  19.                 count = value + 1;//则计数器加1次
  20.             }
  21.             map.put(chs[i], count);//将字符键,对应次数存放到集合中
  22.         }
  23.        
  24.         //迭代集合方法1
  25.         Set<Map.Entry<Character, Integer>> entry_Set = map.entrySet();
  26.         Iterator<Map.Entry<Character, Integer>> it = entry_Set.iterator();
  27.         while (it.hasNext()) {
  28.             Map.Entry<Character, Integer> me = it.next();
  29.             Character ch = me.getKey();
  30.             Integer value = me.getValue();
  31.             System.out.println(ch + ":::" + value);
  32.         }
  33.        
  34.         //方法2
  35.         for (Character ch : map.keySet()) {
  36.             Integer value = map.get(ch);
  37.             System.out.println(ch+".."+value);
  38.             
  39.         }
  40.         //方法3
  41.         for(Map.Entry<Character, Integer> me : map.entrySet()){
  42.             Character ch = me.getKey();
  43.             Integer value = me.getValue();
  44.             System.out.println(ch+"=="+value);
  45.         }

  46.     }

  47. }
复制代码
运行结果

  1. ,:::1
  2. 不:::2
  3. 化:::2
  4. 发:::4
  5. 灰:::4
  6. 肥:::2
  7. 黑:::3
  8. ,..1
  9. 不..2
  10. 化..2
  11. 发..4
  12. 灰..4
  13. 肥..2
  14. 黑..3
  15. ,==1
  16. 不==2
  17. 化==2
  18. 发==4
  19. 灰==4
  20. 肥==2
  21. 黑==3
复制代码



回复 使用道具 举报
  1. package com.itheima.test;

  2. import java.util.HashMap;
  3. import java.util.Map;

  4. public class FindStringTimes2 {

  5.     public static void main(String[] args) {

  6.         String str = "黑化肥发黑不发灰,灰化肥发灰不发黑灰";

  7.         Map<String, Integer> map = new HashMap<String, Integer>();

  8.         for (int i = 0; i < str.length(); i++) {
  9.             String key = str.charAt(i) + "";
  10.             Integer value = 1;
  11.             if (map.get(key) == null) {
  12.                 map.put(key, value);
  13.             } else {
  14.                 value = map.get(key);
  15.                 value++;
  16.                 map.put(key, value);
  17.             }

  18.         }
  19.         for (String str1 : map.keySet()) {
  20.             Integer value = map.get(str1);
  21.             System.out.println(str1 + "::" + value);

  22.         }
  23.     }

  24. }
复制代码
21行
回复 使用道具 举报
至尊幽蓝 来自手机 中级黑马 2015-8-23 13:34:11
报纸
if(m.get(str.charAt(i))==null)
应改为:
if(m.get(str.charAt(i)+"")==null)或
if(m.get(key)==null)
回复 使用道具 举报
这个很重要,建议多练习~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马