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

解决方案 »

  1.   

    楼上说的对~你没有实例化数组~就是没有用new实例化~所以会报你那个异常~
      

  2.   

    Mankey[] mk=new Mankey[100];
    Mankey.Inroad(mk);
    数组mk没有初始化(赋值操作)
    当然会报空指针了.
      

  3.   

    请问各给大侠,怎么初始化啊??不是new了就行了吗?初始化指的是赋值?
      

  4.   

    定义了变量要new 一下
      

  5.   

                m[i].num = i + 1;
                m[i].prior = i;
                m[i].next = i + 2;
    有这种结构?
      

  6.   

    Mankey[] mk=new Mankey[100]; <--这个不算new一下??说的细一点行吗??谢了
      

  7.   

                m[i].num = i + 1; 
                m[i].prior = i; 
                m[i].next = i + 2; 
    这个是要给变量赋值,计算用。
      

  8.   

                m[i].num = i + 1; 
                m[i].prior = i; 
                m[i].next = i + 2; 
    这个是要给变量赋值,计算用。
      

  9.   

    你已经初始化了 但是那是空的对象 即NULL
    NULL并没有num prior next那些属性 所以当你调用的时候就报空指针异常 所以你要保证数组内有  Mankey类型的对象 才能对它进行属性操作
    OVER
      

  10.   

    问题解决了,谢谢大家,在main中写入
    for(int i=0;i<100;i++)
    {
        mk[i]=new Mankey();
    }
    产生具体对象就行了。