当前位置: 代码迷 >> J2SE >> 一个小题。大牛给看一下。该如何处理
  详细解决方案

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

热度:39   发布时间:2016-04-24 01:10:58.0
一个小题。大牛给看一下。
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
  相关解决方案