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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.*;
class  stringCountDemo
{
        public static String stringCount(String str)
        {
                char []ch=str.toCharArray();
                TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
                for(int x=0;x<ch.length;x++)
                {
                        Integer value=tm.get(ch[x]);
                        if(value==null)
                                tm.put(ch[x],1);
                        tm.put(ch[x],++value);
                }
                System.out.println(tm);
                return null;
        }

                public static void main(String[] args)
        {
                stringCount("abaccdb");
        }
}

6 个回复

倒序浏览
import java.util.*;
class  StringCountDemo
{
        public static String stringCount(String str)
        {
                char []ch=str.toCharArray();
                TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
                for(int x=0;x<ch.length;x++)
                {
                        Integer value=tm.get(ch[x]);
                                                System.out.println(x);
                                                System.out.println(value);
                        if(value==null)
                            tm.put(ch[x],1);
                        else
                            tm.put(ch[x],++value);
                }
                System.out.println(tm);
                return null;
        }

                public static void main(String[] args)
        {
                stringCount("abaccdb");
        }
}


楼主出现问题可以把每个成员变量都打印出来,就能找到问题的原因
你原来的代码
Integer value=tm.get(ch[x]);
System.out.println(x);
System.out.println(value);
   if(value==null)
加上输出语句就发现结果如下
0
null
Exception in thread "main" java.lang.NullPointerException
        at StringCountDemo.stringCount(StringCountDemo.java:15)
        at StringCountDemo.main(StringCountDemo.java:23)
明显循环进去了
还有发现出错语句为  tm.put(ch[x],++value);你可以将它注释掉再看结果。。
回复 使用道具 举报
yocean 发表于 2012-3-23 11:22

谢谢指正
回复 使用道具 举报
孙雪娇 发表于 2012-3-23 11:40
import java.util.*;
class  StringCountDemo
{

谢谢。
把tm.put(ch[x],++value);改为
else
{value=value+1;
tm.put(ch[x],value);
}
就正确了。
回复 使用道具 举报
牛秦勇 发表于 2012-3-23 11:58
谢谢。
把tm.put(ch[x],++value);改为
else

:L我贴的也改好了。。。。
回复 使用道具 举报
孙雪娇 发表于 2012-3-23 12:06
我贴的也改好了。。。。

:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马