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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 一顿一只牛 于 2014-8-10 20:28 编辑

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

/*
* 判断字符串中出现的次数。(映射关系)
* 如“ahfuiegnabguegad”每个字母出现的次数。
*
*  1 把字符串转换成字符数组操作
*   2 定义map容器,因为有顺序,所以采用TreeMap
*    3 遍历字母出现次数
*     4 输出
*
* */
public class Tree2 {
        public static void main(String[] args){
                String s = strCount("adfhdufienvbeuihvdanvuehfec huehvianebv");
               
                System.out.println(s);
        }
        public static String strCount(String str){
                //将字符串转化成字符数组,以便于操作
                char[] chs = str.toCharArray();
                TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
           
                //遍历,算出每个字符串出现的次数。
                for(int x=0; x<=chs.length; x++){
                        if(!(chs[x]>="a" && chs[x]<="z" || chs[x]>="A" && chs[x]<="Z"));
                         continue;
                        Integer value = tm.get(chs[x]);
                                if(value == null){
                                        tm.put(chs[x], 1);
                                }
                                else {
                                        value = value + 1;
                                    tm.put(chs[x], value);
                                }   
                }
                //创建StringBuilder对象,进行存储。
                StringBuilder sb = new StringBuilder();
        
                //取出TreeMap集合中的存储的键值对。
                Set<Character> keySet = tm.keySet();
                Iterator<Character> it = keySet.iterator();
                while(it.hasNext()){
                        Character ch = it.next();
                        Integer value = tm.get(ch);
                    sb.append(ch+"("+value+"");
                }        
                return sb.toString();
        }
}
求大神们指导, 这代码哪出错了呀。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

8 个回复

倒序浏览
chs[x]>="a"
改为
chs[x]>= 'a'
'a' 是 char ,"a" 是 String

点评

啊。 解决了。 谢谢大神了~  发表于 2014-8-10 20:27
回复 使用道具 举报
    if(!(chs[x]>="a" && chs[x]<="z" || chs[x]>="A" && chs[x]<="Z"));
                         continue;


if后面有分号,
还有就是char用单引号判断

点评

啊。 解决了。 谢谢大神了~  发表于 2014-8-10 20:26
回复 使用道具 举报
laibin2 发表于 2014-8-10 19:47
if(!(chs[x]>="a" && chs[x]="A" && chs[x]

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
        at Tree2.strCount(Tree2.java:28)
        at Tree2.main(Tree2.java:17)


改了  还是不行  报这个错
回复 使用道具 举报
icris 发表于 2014-8-10 19:42
chs[x]>="a"
改为
chs[x]>= 'a'

改了 还是不行呀   报这个错啊
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
        at Tree2.strCount(Tree2.java:28)
        at Tree2.main(Tree2.java:17)
回复 使用道具 举报
一顿一只牛 发表于 2014-8-10 20:20
改了 还是不行呀   报这个错啊
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:  ...

只针对这个错误:x<=chs.length 改为 x<chs.length
他不是告诉你数组越界了…
回复 使用道具 举报
icris 发表于 2014-8-10 20:26
只针对这个错误:x

刚看出来。。。谢谢大神啊~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马