黑马程序员技术交流社区

标题: NullPointException报错,可和老师的代码一样嘛,为啥为啥为啥 [打印本页]

作者: 阿牛    时间: 2012-3-23 10:57
标题: NullPointException报错,可和老师的代码一样嘛,为啥为啥为啥
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");
        }
}
作者: 孙雪娇    时间: 2012-3-23 11:40
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);你可以将它注释掉再看结果。。
作者: 阿牛    时间: 2012-3-23 11:54
yocean 发表于 2012-3-23 11:22

谢谢指正
作者: 阿牛    时间: 2012-3-23 11:58
孙雪娇 发表于 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 12:06
牛秦勇 发表于 2012-3-23 11:58
谢谢。
把tm.put(ch[x],++value);改为
else

:L我贴的也改好了。。。。
作者: 阿牛    时间: 2012-3-23 12:27
孙雪娇 发表于 2012-3-23 12:06
我贴的也改好了。。。。

:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2