A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨华东 中级黑马   /  2012-9-28 18:54  /  1573 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
import java.util.Map.Entry;
public class Demo1
{
public static void main(String[] args)
{
  charCount("cfgd5ZI001KJIUYUGLKOLUIHUIUIHUIUIUIUI545455450111drtsaaa");
}
public static void charCount(String str)
{
  
  char[] chs=str.toCharArray();
  
  TreeMap<Character,Integer> tp=new TreeMap<Character, Integer>();
  for(int x=0;x<chs.length;x++)
  {
   if(!(chs[x]>='a'&&chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z'||chs[x]>=0&&chs[x]<=9))
     //throw new RuntimeException("出现非法字符");
    continue;
   Integer value=tp.get(chs[x]);
   if(value!=null)
   {
    tp.put(chs[x], 1);
   }
   else
   {
    value=value+1;
    tp.put(chs[x], value);
   }
   
  }
  //System.out.println(tp.get('p'));
  Set<Map.Entry<Character,Integer>> entryset=tp.entrySet();
  Iterator<Entry<Character, Integer>> it=entryset.iterator();
  while(it.hasNext())
  {
   Map.Entry<Character, Integer> me=it.next();
   Character key=me.getKey();
   Integer value=me.getValue();
     System.out.print(key+"("+value+")");
  }
}
}

请帮我看一哈 哪里的问题???跪谢。。。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
if(value!=null)//应改为value==null
   {
    tp.put(chs[x], 1);
   }
   else
   {
    value=value+1;
    tp.put(chs[x], value);
   }

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
第20行:Integer value=tp.get(chs[x]);//这里的tp还是空的你去索引返回的也是null
第27行:value=value+1;//这里又将一个空的value加1所以会报异常!!
我不知道你的需求是什么?
  1. import java.util.*;
  2. import java.util.Map.Entry;
  3. public class Demo1
  4. {
  5.          public static void main(String[] args)
  6.         {
  7.            charCount("cfgd5ZI001KJIUYUGLKOLUIHUIUIHUIUIUIUI545455450111drtsaaa");
  8.         }
  9.          public static void charCount(String str)
  10.         {
  11.                 char[] chs=str.toCharArray();
  12.                   
  13.                 TreeMap<Character,Integer> tp=new TreeMap<Character, Integer>();
  14.                
  15.                 for(int x=0;x<chs.length;x++)
  16.                 {
  17.                         if(!(chs[x]>='a'&&chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z'||chs[x]>=0&&chs[x]<=9))
  18.                           //throw new RuntimeException("出现非法字符");
  19.                          continue;
  20.                         Integer value=tp.get(chs[x]);//这里的tp还是空的你去索引返回的也是null
  21.                         if(value!=null)
  22.                         {
  23.                                 tp.put(chs[x], 1);
  24.                         }
  25.                         else
  26.                         {
  27.                                 value=value+1;//这里又将一个空的value加1所以会报异常!!
  28.                                 tp.put(chs[x], value);
  29.                         }
  30.                 }
  31.                    //System.out.println(tp.get('p'));
  32.                         Set<Map.Entry<Character,Integer>> entryset=tp.entrySet();
  33.                        
  34.                         Iterator<Entry<Character, Integer>> it=entryset.iterator();
  35.                        
  36.                 while(it.hasNext())
  37.                 {
  38.                         Map.Entry<Character, Integer> me=it.next();
  39.                         Character key=me.getKey();
  40.                         Integer value=me.getValue();
  41.                         System.out.print(key+"("+value+")");
  42.                 }
  43.         }
  44. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你是想记录字符串中的字符出现次数吧

粗心了啊 把27行的!=换成==就可以了

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
郭阳 发表于 2012-9-28 20:03
你是想记录字符串中的字符出现次数吧

粗心了啊 把27行的!=换成==就可以了 ...

哎  惭愧啊
回复 使用道具 举报
大哥,你的tp集合没有元素,所以你的value为空,但是你的代码:
if(value!=null)
    {
     tp.put(chs[x], 1);
    }
    else
    {
     value=value+1;
     tp.put(chs[x], value);
    }
中会执行else块代码,由于value为null所以value=value+1会报空指针异常
就会出错。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
我覺得寫代碼的時候最好多加注解,以便自己和別人再次使用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马