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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Forevery 中级黑马   /  2013-12-9 18:14  /  1045 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在临摹老师的代码时,输入了自己的数据,需求是遍历出字符串中的字母并显示出现的次数。当我在字符串中夹入了几个"^"符号的时候,竟然也跟着字母遍历出去了,难道那哥们也是字母?
代码如下:
import java.util.*;

class MapTest3
{
        public static void main(String[] args)
        {
                String s = charCount("aabbdde.,567%^^^.....%*&*(essjj");
                System.out.println(s);
        }
        public static 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'))
                                continue;//^为什么会出现在结果中。
                        Integer value = tm.get(chs[x]);
                        if(value!=null)
                                count = value;
                        count++;
                        tm.put(chs[x],count);
                        count = 0;
                StringBuilder sb = new StringBuilder();

                Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
                Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();

                while(it.hasNext())
                {
                        Map.Entry<Character,Integer> me = it.next();
                        Character ch = me.getKey();
                        Integer in = me.getValue();
                        sb.append(ch+"("+in+")");
                }
                return sb.toString();
        }
}

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

7 个回复

倒序浏览
if(!(chs[x]>='a' && chs[x]<='z'|| chs[x]>='A' && chs[x]<='z'))这一句错了
应该是 if(!((chs[x]>='a' && chs[x]<='z')|| ( chs[x]>='A' && chs[x]<='z')))
回复 使用道具 举报
何丛 发表于 2013-12-9 18:23
if(!(chs[x]>='a' && chs[x]='A' && chs[x]='a' && chs[x]='A' && chs[x]

不用加括号啦,||的优先级比&&和>都低
回复 使用道具 举报
if(!(chs[x]>='a' && chs[x]<='z'|| chs[x]>='A' && chs[x]<='z'))
哥,你这第二个条件是什么chs[x]>='A' && chs[x]<='z'
应该是chs[x]>='A'&&chs[x]<='Z'
后面字符Z写成小写了

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
§傻、才乖 发表于 2013-12-9 18:29
if(!(chs[x]>='a' && chs[x]='A' && chs[x]='A' && chs[x]='A'&&chs[x]

嘎嘎,果然是细心人,我怎么没发现呢
回复 使用道具 举报
这个没办法的,只能细心的找了
也可以用debug模式,慢慢找的
回复 使用道具 举报
§傻、才乖 发表于 2013-12-9 18:39
这个没办法的,只能细心的找了
也可以用debug模式,慢慢找的

还有啊,技术分怎么这么难挣啊。。有些问题不会,有些会的吧,想到的答案也被别人先回答了
回复 使用道具 举报
你回答的好,回答的全面,就会给你技术分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马