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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨增坤 于 2013-10-5 21:16 编辑

如题: public static void main(String[] args) {                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                  countNums(str);
        }

        public static void countNums(String str) {
               
                        char[] ch = str.toCharArray();
                        for (int i = 0; i < ch.length; i++) {
                                
                        }
        }
我只知道怎么获取其中一个字符出现的次数, 怎么用map 将每一个字符都统计并打印出来。


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

6 个回复

倒序浏览
  1. import java.util.Iterator;
  2. import java.util.Map;
  3. import java.util.Map.Entry;
  4. import java.util.Scanner;
  5. import java.util.Set;
  6. import java.util.TreeMap;


  7. public class StringMapDemo {
  8.         public static void main(String[] args) {
  9.                 Scanner scanner = new Scanner(System.in);
  10.                 String string = scanner.next();
  11.                 Map<Character, Integer> map = new TreeMap<Character, Integer>();
  12.                 for (int i = 0; i < string.length(); i++) {
  13.                         char c = string.charAt(i);
  14.                         Integer account = map.get(c);
  15.                         if(account == null){
  16.                                 account = 1;
  17.                         }
  18.                         else {
  19.                                 account++;
  20.                         }
  21.                         map.put(c, account);
  22.                 }
  23.                 Set<Map.Entry<Character, Integer>> set = map.entrySet();        //entrySet()方法得到映射的Set
  24.                 Iterator<Map.Entry<Character, Integer>> iterator = set.iterator();      //迭代器访问
  25.                 while (iterator.hasNext()) {
  26.                         Map.Entry<Character, Integer> entry = iterator.next();
  27.                         System.out.println(entry.getKey() + " : " + entry.getValue());
  28.                        
  29.                 }
  30.         }
  31. }
复制代码
楼主,我昨晚刚好做了个.你参考下.功能实现了.不过没有用你的代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
赖龙威 发表于 2013-10-5 18:16
楼主,我昨晚刚好做了个.你参考下.功能实现了.不过没有用你的代码

恩恩,谢谢。 之前没用过Map 。好好研究研究
回复 使用道具 举报
赖龙威 发表于 2013-10-5 18:16
楼主,我昨晚刚好做了个.你参考下.功能实现了.不过没有用你的代码

  char c = string.charAt(i);      
         Integer account = map.get(c);
                if(account == null){
                        account = 1;
                }
                else {
                        account++;
                }
我不太明白这个 == null 为啥要置为1

回复 使用道具 举报
xh396660787 发表于 2013-10-5 19:13
用map的话可以将字符和出现次数分别作为键值对进行存储,依次对字符数组进行判断,若map里面包含这个key,m ...

恩,这个比较容易懂一点。 发现自己差的好多。。
回复 使用道具 举报
qushuai 发表于 2013-10-5 20:48
char c = string.charAt(i);      
         Integer account = map.get(c);
                if(acco ...

就是这个字母之前没有出现过,第一次出现。就会get到null。account就是1哇
回复 使用道具 举报
qushuai 发表于 2013-10-5 20:25
恩恩,谢谢。 之前没用过Map 。好好研究研究

这个是老师讲的经典的例子,后面你后遇到的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马