构造方法的问题,大家帮帮忙啊!
这是java。错误总是这样的。
Exception in thread "main"
java.lang.NullPointerException at MaxMinHeap.<init>(MaxMinHeap.java:23)
at MaxMinHeap.main(MaxMinHeap.java:271)
public class Test {
public int data[];
public int N;
public Test(int[] data) {
int N = data.length;
for(int i=N/2; i>=1; i--)
data[i]=1;
}
void exch(int i, int j)
{
int t = data[i];
data[i] = data[j];
data[j] = t;
}
public static void main(String[] args) {
前面键盘输入略去。假设输入1 2 3 4 5.
for(int i=1;i<M;i++)
data[i]=Integer.parseInt(standard.next());
for(int i=1;i<M;i++)
System.out.println(data[i]);
Test MT = new Test(data);
System.out.println(MT.exch(1,5);
}
}
------解决方案--------------------
Test中的public int data[]; 没有创建
public int data[]; //这个没有初始化 =new int[..];
public int N;
public Test(int[] data) { //这里处理的是方法外创建的int[]data,跟public int data[];没有关系
int N = data.length;
for(int i=N/2; i>=1; i--)
data[i]=1;
}
void exch(int i, int j)
{
int t = data[i]; //这里使用的是public int data[];还没有创建呢,这句话肯定有问题.
data[i] = data[j];
data[j] = t;
}
------解决方案--------------------
Java code
public class Test {
public int data[];
public int N;
public Test(int[] date) {
N = date.length;
data=new int[N];
for(int i=N/2; i>=1; i--)
data[i]=1;
}
public void exch(int i, int j)
{
int datx[]=this.data;
int t= datx[i];
datx[i] = datx[j];
datx[j] = t;
System.out.println(datx[1]);
}
public static void main(String[] args) {
int M=5;
int date[]={1,2,3,4,5};
/*for(int i=1;i <M;i++)
data[i]=Integer.parseInt(standard.next()); */
// for(int i=1;i <M;i++)
//System.out.println(date[i]);
Test MT = new Test(date);
MT.exch(1,4);//这里最多就到4,5就越界了,这儿也不要输出一个没有返回值的函数,那样会报错,要实
//现什么功能再改改吧
}
}