main文件
public class MMain {
public static void main(String[] args)
{
//try{
Mankey[] mk=new Mankey[100];
Mankey.Inroad(mk);
System.out.println(Mankey.clean(mk));
//}catch(Exception Ex){};
}
}
Mankey文件
public class Mankey {
public int num,prior,next;
public Mankey()
{
}
static void Inroad(Mankey[] m)
{
int last=m.length;
for (int i=0;i<last;i++)
{
m[i].num=i+1;
m[i].prior=i;
m[i].next=i+2;
System.out.println("zhe");
}
m[0].prior=m[last-1].num;
m[last-1].next=m[0].num;
}
static int clean(Mankey[] m )
{
int count=1;
int i=1;
do
{
if(count==3)
{
m[m[i].prior].next=m[i].next;
m[m[i].next].prior=m[i].prior;
count=1;
}
i=m[i].next;
count++;
}while(i==m[i].next);
return (m[i].num);
}
}提示错误
Exception in thread "main" java.lang.NullPointerException
at Mankey.Inroad(Mankey.java:14)
at MMain.main(MMain.java:7)
为什么报错啊??我看不太懂,,,,刚接触java
public class MMain {
public static void main(String[] args)
{
//try{
Mankey[] mk=new Mankey[100];
Mankey.Inroad(mk);
System.out.println(Mankey.clean(mk));
//}catch(Exception Ex){};
}
}
Mankey文件
public class Mankey {
public int num,prior,next;
public Mankey()
{
}
static void Inroad(Mankey[] m)
{
int last=m.length;
for (int i=0;i<last;i++)
{
m[i].num=i+1;
m[i].prior=i;
m[i].next=i+2;
System.out.println("zhe");
}
m[0].prior=m[last-1].num;
m[last-1].next=m[0].num;
}
static int clean(Mankey[] m )
{
int count=1;
int i=1;
do
{
if(count==3)
{
m[m[i].prior].next=m[i].next;
m[m[i].next].prior=m[i].prior;
count=1;
}
i=m[i].next;
count++;
}while(i==m[i].next);
return (m[i].num);
}
}提示错误
Exception in thread "main" java.lang.NullPointerException
at Mankey.Inroad(Mankey.java:14)
at MMain.main(MMain.java:7)
为什么报错啊??我看不太懂,,,,刚接触java
Mankey.Inroad(mk);
数组mk没有初始化(赋值操作)
当然会报空指针了.
m[i].prior = i;
m[i].next = i + 2;
有这种结构?
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
NULL并没有num prior next那些属性 所以当你调用的时候就报空指针异常 所以你要保证数组内有 Mankey类型的对象 才能对它进行属性操作
OVER
for(int i=0;i<100;i++)
{
mk[i]=new Mankey();
}
产生具体对象就行了。