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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. <p>package question;

  2. import java.util.TreeMap;

  3. /**
  4. * 利用map知识点,获取字符串“kalskga”中每一个字母出现的次数
  5. *
  6. * 例:a(2)b(4)f(1)
  7. *
  8. * @author Administrator
  9. *
  10. */
  11. public class Qtest19 {
  12.         public static void main(String[] args) {
  13.                 String str = "kalskga";
  14.                 // 将字符串转换成char数组
  15.                 char[] ch = str.toCharArray();
  16.                 //调用charToTreeMap()
  17.                 TreeMap<Character, Integer> tm = charToTreeMap(ch);
  18.                 System.out.println(tm);
  19.         }

  20.         public static TreeMap<Character, Integer> charToTreeMap(char[] ch) {
  21.                 // 创建TreeMap对象
  22.                 TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
  23.                 for (int i = 0; i < ch.length - 1; i++) {
  24.                         int n = 1;
  25.                         for (int j = 1 + i; j < ch.length; j++) {
  26.                                 if(ch[i] == ch[j]){
  27.                                         n++;
  28.                                 }
  29.                         }
  30.                         tm.put(ch[i], n);
  31.                 }
  32.                 return tm;
  33.         }
  34. }</p><p>
  35. </p><p>
  36. </p><p>
  37. </p><p>
  38. </p><p>
  39. </p><p>哪里出问题了?求指教啊……
  40. </p>
复制代码

2 个回复

倒序浏览
本帖最后由 LuckyMe 于 2014-11-26 21:47 编辑

第33行,TreeMap 存入键值对的时候新值会替换老值。如果k出现了2次,第一个k存入(k,2),第二个k存入(k,1)。n每次开始都是1,这样的话出现3次及以上的字母也会变成2次呢。还是毕老师视频中的那个方法好啊。
回复 使用道具 举报
LuckyMe 发表于 2014-11-26 21:23
第33行,TreeMap 存入键值对的时候新值会替换老值。如果k出现了2次,第一个k存入(k,2),第二个k存入(k,1)。n ...

谢了~~搞明白了~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马