黑马程序员技术交流社区

标题: 取出一行字符串的个数问题 [打印本页]

作者: zhouxp3323    时间: 2012-3-30 21:02
标题: 取出一行字符串的个数问题
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集合打印出来,哪里出什么问题了吗?
作者: 李东志    时间: 2012-3-31 09:50
对字母次数计算时有点小问题,此处并不需要定义变量count,当字母第一次出现时value值赋值成1就可以了,其他时候value++;
可以这样修改:
               Integer value = tm.get(chs[x]);                                
                                 if(value!=null)
                                         value++;
                                 else{
                                         value=1;
                                 }
                                 tm.put(chs[x], value);
还有一点格式问题,你的静态方法charCount没有添加返回值。
作者: 李涛涛    时间: 2012-3-31 10:13
charCount()这个返回值在哪里?你需要打印的是TreeMap里面的元素,你的代码思路有问题:
建议对value值的判断改写
if(value == null)
    count =0;
count++;
tm.put(chs[x], count);
这样子可以实现你想要的效果,你上面的写法,判断出来字母的个数永远是1(即便不只出现一次)





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