日期:2014-05-20  浏览次数:20876 次

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