黑马程序员技术交流社区

标题: 做了一个老师提供的题,结果弄出来却不是要的那个效果... [打印本页]

作者: 贾飞雨    时间: 2012-7-9 23:32
标题: 做了一个老师提供的题,结果弄出来却不是要的那个效果...
本帖最后由 yufeiant 于 2012-7-10 00:38 编辑


import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Test3 {
//        统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出。
//           例如:c : 1,e : 1,d : 2,f : 2,b : 3,a : 4
//        思路:把这个字符串转化为字符数组,然后便利所有的数组,把每个元素取出,建立一个TreeMap集合对象,把每个元素作为键放入TreeMap
        //对象中,如果集合中没有这个元素,那么键值对的值加一并和这个这个元素一起存储到TreeMap集合中,如果有了就不存入这个元素,把所有的
        //的元素都都放到集合中,然后把这个集合装换成字符串
        public static void main(String[] args) {
                String str = "c : 1,e : 1,d : 2,f : 2,b : 3,a : 4";
                TreeMap<Character, Integer> tm = gerTreeMap(str);
                StringBuffer ss = ToStringTreeMap(tm);
                System.out.println(ss);


        }
        public static  TreeMap<Character, Integer> gerTreeMap(String str){
                TreeMap<Character, Integer> tr = new TreeMap<Character,Integer>();
                char [] arr = str.toCharArray();
                for(int  x = 0;x<arr.length;x++)
                {
                        char c = arr[x];
                        Integer i = tr.get(c);
                        if(!tr.containsKey(c))
                        {
                                tr.put(c, 1);
                        }
                        else{
                                i++;
                                tr.put(c, i);
                        }
                        
                }
                return tr;}
        public static StringBuffer ToStringTreeMap(TreeMap<Character, Integer> tr)
        {
                //对集合进行转换,把其转换为字符串,在转换的同时把其他的都吸添加进去
                StringBuffer sbf = new StringBuffer();
                Set<Map.Entry<Character,Integer>> st = tr.entrySet();
                Iterator<Map.Entry<Character,Integer>> it  = st.iterator();
                while(it.hasNext()){
                        Map.Entry<Character,Integer> mp = it.next();
                        Character key = mp.getKey();
                        Integer value = mp.getValue();
                        sbf.append(key).append(":").append(value);
                }
                return sbf;        
        }
}
运行结果却是这样,当时就崩溃了:121:22:23:14:1::6a:1b:1c:1d:1e:1f:1,:5



作者: 贾飞雨    时间: 2012-7-9 23:57
求帮忙  谢谢
作者: 贾飞雨    时间: 2012-7-10 00:28
哥们问题找到了  ,你们找到了吗???
作者: 王亚男    时间: 2012-7-10 00:31
本帖最后由 王亚男 于 2012-7-10 00:34 编辑
yufeiant 发表于 2012-7-10 00:28
哥们问题找到了  ,你们找到了吗???


String str = "c : 1,e : 1,d : 2,f : 2,b : 3,a : 4";

第一,这个字符串您写错了……应该是传“abadcdffbaeba”吧。。

第二,加个排序方式就行了。
作者: 贾飞雨    时间: 2012-7-10 00:38
呵呵   还有哥们回呢?干嘛要加排序方式啊?
作者: 王亚男    时间: 2012-7-10 00:43
yufeiant 发表于 2012-7-10 00:38
呵呵   还有哥们回呢?干嘛要加排序方式啊?

上面要求不是要按次数排序输出么……
作者: 孙飞    时间: 2012-7-10 00:50
字符串改正解就欧了
作者: 贾飞雨    时间: 2012-7-10 00:52
额  我好2啊





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