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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouxp3323 黑马帝   /  2012-3-30 21:02  /  2001 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class CalculateChar {

        public static void main(String[] args) {

                //String s = charCount("abadcdffbaeba");
                ArrayList<String> al = charCount("abadcdffbaeba");
                System.out.println(al);
        }
                public static ArrayList<String> charCount(String str){
                char[] chs = str.toCharArray();
                TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
               
                int count = 0;
                for(int x=0;x<chs.length;x++){
                        if((chs[x]>='a'&&chs[x]<='z') || (chs[x]>='A'&&chs[x]<='Z')){
                                Integer value = tm.get(chs[x]);
                                if(value!=null)
、                                          count++;
                                tm.put(chs[x], count);
                                count = 0;
                        }
                }
                System.out.println(tm);
}
我想先把这个字符串变成treeMap集合打印出来,哪里出什么问题了吗?

2 个回复

倒序浏览
对字母次数计算时有点小问题,此处并不需要定义变量count,当字母第一次出现时value值赋值成1就可以了,其他时候value++;
可以这样修改:
               Integer value = tm.get(chs[x]);                                
                                 if(value!=null)
                                         value++;
                                 else{
                                         value=1;
                                 }
                                 tm.put(chs[x], value);
还有一点格式问题,你的静态方法charCount没有添加返回值。
回复 使用道具 举报
charCount()这个返回值在哪里?你需要打印的是TreeMap里面的元素,你的代码思路有问题:
建议对value值的判断改写
if(value == null)
    count =0;
count++;
tm.put(chs[x], count);
这样子可以实现你想要的效果,你上面的写法,判断出来字母的个数永远是1(即便不只出现一次)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马