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
14 个解决方案
#1
只创建了数组,没有创建数组里保存的对象.
这两天这个错误好像比较流行.
这两天这个错误好像比较流行.
#2
数组没有初始化
#3
是的呀 我前几天也一直范
#4
楼上说的对~你没有实例化数组~就是没有用new实例化~所以会报你那个异常~
#5
Mankey[] mk=new Mankey[100];
Mankey.Inroad(mk);
数组mk没有初始化(赋值操作)
当然会报空指针了.
#6
请问各给大侠,怎么初始化啊??不是new了就行了吗?初始化指的是赋值?
#7
怎么赋值啊?给其中的数据成员赋值吗?
#8
定义了变量要new 一下
#9
m[i].num = i + 1;
m[i].prior = i;
m[i].next = i + 2;
有这种结构?
m[i].prior = i;
m[i].next = i + 2;
有这种结构?
#10
Mankey[] mk=new Mankey[100]; <--这个不算new一下??说的细一点行吗??谢了
#11
m[i].num = i + 1;
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
#12
m[i].num = i + 1;
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
#13
你已经初始化了 但是那是空的对象 即NULL
NULL并没有num prior next那些属性 所以当你调用的时候就报空指针异常
所以你要保证数组内有 Mankey类型的对象 才能对它进行属性操作
OVER
NULL并没有num prior next那些属性 所以当你调用的时候就报空指针异常
所以你要保证数组内有 Mankey类型的对象 才能对它进行属性操作
OVER
#14
问题解决了,谢谢大家,在main中写入
for(int i=0;i<100;i++)
{
mk[i]=new Mankey();
}
产生具体对象就行了。
for(int i=0;i<100;i++)
{
mk[i]=new Mankey();
}
产生具体对象就行了。
#1
只创建了数组,没有创建数组里保存的对象.
这两天这个错误好像比较流行.
这两天这个错误好像比较流行.
#2
数组没有初始化
#3
是的呀 我前几天也一直范
#4
楼上说的对~你没有实例化数组~就是没有用new实例化~所以会报你那个异常~
#5
Mankey[] mk=new Mankey[100];
Mankey.Inroad(mk);
数组mk没有初始化(赋值操作)
当然会报空指针了.
#6
请问各给大侠,怎么初始化啊??不是new了就行了吗?初始化指的是赋值?
#7
怎么赋值啊?给其中的数据成员赋值吗?
#8
定义了变量要new 一下
#9
m[i].num = i + 1;
m[i].prior = i;
m[i].next = i + 2;
有这种结构?
m[i].prior = i;
m[i].next = i + 2;
有这种结构?
#10
Mankey[] mk=new Mankey[100]; <--这个不算new一下??说的细一点行吗??谢了
#11
m[i].num = i + 1;
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
#12
m[i].num = i + 1;
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
m[i].prior = i;
m[i].next = i + 2;
这个是要给变量赋值,计算用。
#13
你已经初始化了 但是那是空的对象 即NULL
NULL并没有num prior next那些属性 所以当你调用的时候就报空指针异常
所以你要保证数组内有 Mankey类型的对象 才能对它进行属性操作
OVER
NULL并没有num prior next那些属性 所以当你调用的时候就报空指针异常
所以你要保证数组内有 Mankey类型的对象 才能对它进行属性操作
OVER
#14
问题解决了,谢谢大家,在main中写入
for(int i=0;i<100;i++)
{
mk[i]=new Mankey();
}
产生具体对象就行了。
for(int i=0;i<100;i++)
{
mk[i]=new Mankey();
}
产生具体对象就行了。