黑马程序员技术交流社区
标题:
【已解决】回顾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