class Text1
{
public static void main(String[] args)
{
getCharCount("sfadafsaffsdafsdafsd");
}
public static void getCharCount(String str)
{
//int count=0;
Map<Character,Integer>map=new TreeMap<Character,Integer>();
char[] chs=str.toCharArray();
for(int x=0;x<str.length();x++)
{
Character ch=chs[x];
Integer value=map.get(ch);
if(value!=null)
value=value+1;
value=1;
map.put(ch,value);
}
/*
if(map.get(ch)==null)
map.put(ch,1);
else
{
value=value+1;
map.put(ch,value);
}
*/
}
Set<Map.Entry<Character,Integer>> entrySet=map.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer>relation=it.next();
Character key=relation.getKey();
Integer value=relation.getValue();
System.out.println(key+"--"+value);
}
}
}
注释的部分可以编译通过,也能获取正确的结果。(求字符串中每个字母的个数)
为什么简化的那部分不能呢?连编译都不能通过。。。一直没搞明白,希望大牛能给看一下。。。。想知道为什么。
------解决方案--------------------
多了一括号吗?整下格式就好了,有点乱。
- Java code
import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;public class Test{ public static void main(String[] args){ getCharCount("sfadafsaffsdafsdafsd"); } public static void getCharCount(String str){ // int count=0; Map<Character,Integer>map = new TreeMap<Character,Integer>(); char[] chs=str.toCharArray(); for(int x=0;x<str.length();x++){ Character ch=chs[x]; Integer value=map.get(ch); map.entrySet(); if(value!=null) value=value+1; value=1; map.put(ch,value); } /* * if(map.get(ch)==null) map.put(ch,1); else { value=value+1; * map.put(ch,value); } */ //}多了一括号吗? Set<Map.Entry<Character,Integer>> entrySet= map.entrySet(); Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator(); while(it.hasNext()){ Map.Entry<Character,Integer>relation=it.next(); Character key=relation.getKey(); Integer value=relation.getValue(); System.out.println(key+"--"+value); } }}
------解决方案--------------------
if(value==null)
value=1;
map.put(ch,--value+1);
你这样写的结果就是你value不为null的时候记录的值不变了,你也可以写成这个样子
if(value == null) {
value = 0;
}
map.put(ch, value + 1);
这样的话为null记录的是1,不为null的就加了1