黑马程序员技术交流社区

标题: 【已解决】回顾TreeMap,例子中遇到的问题,看的有点不对头 [打印本页]

作者: 黄敏    时间: 2012-8-20 22:11
标题: 【已解决】回顾TreeMap,例子中遇到的问题,看的有点不对头
本帖最后由 黄敏 于 2012-8-20 22:52 编辑

import java.util.*;


class  MapTest3
{
        public static void main(String[] args)
        {
                String s= charCount("ak+abAf1c,dCkaAbc-defa");
                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;
                        /*
                        if(value==null)
                        {
                                tm.put(chs[x],1);
                        }
                        else
                        {
                                value = value + 1;
                                tm.put(chs[x],value);
                        }
                        */
                }

                //System.out.println(tm);

                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 value = me.getValue();
                        sb.append(ch+"("+value+")");
                }
                return sb.toString();
        }

}


作者: 方志亮    时间: 2012-8-20 22:29
这个条件不就是判断chs[x]是否在a~z 或 A~Z之间吗
如果在这之间就跳过本次循环
我只是看的红色部分  别的不知道
作者: 夏天    时间: 2012-8-20 22:31
  if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='Z'))     
作者: 夏天    时间: 2012-8-20 22:31
  if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='Z'))   
作者: 夏天    时间: 2012-8-20 22:32
晕,发错了 。稍等~~
作者: 夏天    时间: 2012-8-20 22:37
if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='Z'))   
系统是这样判断的。 每个字符在ASCII码表中 都有对应的二进制数字
比如大写的A对应65,大写的B对应66.。。大写的Z对应90一样
同样小写的a对应97,小写的z对应122。
所以系统能通过chs[x]的值来跟 a-z和 A-Z对应的ASCII码值来进行比较
希望没有答非所问,并希望回答对您有帮助。。




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