构造方法的有关问题,大家帮帮忙啊
构造方法的问题,大家帮帮忙啊!
这是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。错误总是这样的。
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就越界了,这儿也不要输出一个没有返回值的函数,那样会报错,要实 //现什么功能再改改吧 } }