我知道它以前被问过很多次,但我仍然无法理解我的错误..
这只是我正在编写的用于计算数组中重复次数的普通代码(:) 这可能是一个很长的方法,如果您能想到,请建议一种更小的方法)
public int find(int[] sequence)
{
    Arrays.sort(sequence);
    int temp=0,count=0,j=0;
    HashMap<Integer,Integer> data = new HashMap<Integer,Integer>();
        for(int i:sequence){
        Integer c = new Integer(count);
        Integer d = new Integer(j);
        if(i!=temp) {
        if(count!=0) data.put(c,d);
        count++;
        j=1;
        temp=i;
        }
        else j++;
        }
        count++;//This one causes the error
        //System.out.println(count);
        Integer c = new Integer(count);
        Integer d = new Integer(j);
        data.put(c,d);
            long ans =  TheSwapsDivTwo.factorial(sequence.length);
        for(int i=1;i<=data.size();i++){
                ans /=  TheSwapsDivTwo.factorial(data.get(i).intValue());
                System.out.println(data.get(i));
                }
                return (int)ans;
}
public static long factorial(int n) {
            long fact = 1; // this  will be the result
            for (long i = 1; i <= n; i++) {
                fact *= i;
            }
            return fact;
}       
该put方法不会在循环中产生任何错误,for但它会在循环外的实现中产生。
错误是这样的:
java.lang.NullPointerException
at TheSwapsDivTwo.find(TheSwapsDivTwo.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.topcoder.services.tester.java.TestProcess$Runner.run(TestProcess.java:386)
PS count++ 导致了错误......真的很愚蠢......循环超出了界限......