关于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)
真心搞不懂为什么啊。。。