当前位置: 代码迷 >> J2SE >> 构造方法的有关问题,大家帮帮忙啊
  详细解决方案

构造方法的有关问题,大家帮帮忙啊

热度:46   发布时间:2016-04-24 12:52:03.0
构造方法的问题,大家帮帮忙啊!
这是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就越界了,这儿也不要输出一个没有返回值的函数,那样会报错,要实//现什么功能再改改吧     }         }
  相关解决方案