当前位置: 代码迷 >> Java相关 >> 关于java.lang.NullPointerException的错误
  详细解决方案

关于java.lang.NullPointerException的错误

热度:340   发布时间:2013-02-04 13:54:20.0
关于java.lang.NullPointerException的错误
这个是题目:
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。                                                 比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:
[82962, 75933, 63954, 61974]
其中数字的先后顺序可以不考虑。

然后我自己写了一段代码,可是老出错,
import java.*;
public class j4 {

    /**
     * @param args
     */
    static int P[];
    static int k=0;
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
            Loop(12345);
        
        
    }
    public static void Loop(int x)
    {
        int a=x/10000;
        int b=(x-(a*10000))/1000;
        int c=(x-(a*10000)-(b*1000))/100;
        int d=(x-(a*10000)-(b*1000)-(c*100))/10;
        int e=x-(a*10000)-(b*1000)-(c*100)-(d*10);
        int y[]={0,a,b,c,d,e};
        int max;
        int min;
        int sub;
        for(int m=0;m<=P.length;m++)
        {
            if(P[m]==x)
            {
                for(int n:P)
                {
                    System.out.println("循环圈:");
                    System.out.println(n);
                }
                k=0;
                return;
            }
        }
        for(int i=1;i<=4;i++)
        {
            for(int j=4;j>=i;j--)
            {
                int temp;
                if(y[i]>=y[i+1])
                {
                    temp=y[i];
                    y[i]=y[i+1];
                    y[i+1]=temp;
                }
                    
            }
            
        }
        /*for(int z:y)
            {            
            System.out.print(z);
            }*/
        max=y[5]*10000+y[4]*1000+y[3]*100+y[2]*10+y[1];
        min=y[1]*10000+y[2]*1000+y[3]*100+y[4]*10+y[5];
        sub=max-min;
        P[k]=sub;
        k++;
        System.out.println(sub);
        Loop(sub);
    }

}
  
报错:Exception in thread "main" java.lang.NullPointerException
    at j4.Loop(j4.java:28)
    at j4.main(j4.java:11)

真心搞不懂为什么啊。。。
搜索更多相关的解决方案: 编写程序  最大的  

----------------解决方案--------------------------------------------------------
java.lang.NullPointerException 是最常见的运行时错误
这个要学会自己看错误信息调试

你给出的错误信息中
at j4.Loop(j4.java:28)
    at j4.main(j4.java:11)
已经告诉你是j4.java中28行 和11行
根据行号找到相应的代码,查看是否有空的引用
例如
for(int m=0;m<=P.length;m++)
确定P已经被new出来不为空?

----------------解决方案--------------------------------------------------------
回复 2楼 shellingford
P分配空间后,错误消失,楼主初学者,感谢指正!
----------------解决方案--------------------------------------------------------
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!
 
  • 最近登录:Tue Oct 23 20:15:21 CST 2018
  • 最近登录:Tue Oct 23 20:15:21 CST 2018
  • 最近登录:Tue Oct 23 20:15:21 CST 2018
  • 最近登录:Tue Oct 23 20:15:21 CST 2018
  • 最近登录:Tue Oct 23 20:15:21 CST 2018