读书人

一个小题。大牛给看一下。该如何处理

发布时间: 2012-05-03 14:06:56 作者: rapoo

一个小题。大牛给看一下。
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

读书人网 >J2SE开发

热点推荐