黑马程序员技术交流社区

标题: 从键盘获取一个字符串,如何获取每个字符出现的次数。... [打印本页]

作者: qushuai    时间: 2013-10-5 17:00
标题: 从键盘获取一个字符串,如何获取每个字符出现的次数。...
本帖最后由 杨增坤 于 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 将每一个字符都统计并打印出来。



作者: 赖龙威    时间: 2013-10-5 18:16
  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. }
复制代码
楼主,我昨晚刚好做了个.你参考下.功能实现了.不过没有用你的代码
作者: qushuai    时间: 2013-10-5 20:25
赖龙威 发表于 2013-10-5 18:16
楼主,我昨晚刚好做了个.你参考下.功能实现了.不过没有用你的代码

恩恩,谢谢。 之前没用过Map 。好好研究研究

作者: qushuai    时间: 2013-10-5 20:48
赖龙威 发表于 2013-10-5 18:16
楼主,我昨晚刚好做了个.你参考下.功能实现了.不过没有用你的代码

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


作者: qushuai    时间: 2013-10-5 21:12
xh396660787 发表于 2013-10-5 19:13
用map的话可以将字符和出现次数分别作为键值对进行存储,依次对字符数组进行判断,若map里面包含这个key,m ...

恩,这个比较容易懂一点。 发现自己差的好多。。

作者: 赖龙威    时间: 2013-10-5 21:13
qushuai 发表于 2013-10-5 20:48
char c = string.charAt(i);      
         Integer account = map.get(c);
                if(acco ...

就是这个字母之前没有出现过,第一次出现。就会get到null。account就是1哇
作者: 杨增坤    时间: 2013-10-5 21:15
qushuai 发表于 2013-10-5 20:25
恩恩,谢谢。 之前没用过Map 。好好研究研究

这个是老师讲的经典的例子,后面你后遇到的





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