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

大家帮我看看这个就几行的代码是什么问题好吗?
package   com.swtdesigner;
import   java.lang.Double;


public   class   TestFor   {
public   static   boolean   bit   []={true,false,false,true};
public   static   int   []   measure2=   null   ;
public   static     double   []   measure=   null   ;
public   static   double   []   Setmeasure2()
{
for(int   i=0;i <10;i++)
{
measure[i]   =   bit.length*Math.random();
}
return   measure;
}
  public   static   void   main(String   []   args){
 
  System.out.println(TestFor.Setmeasure2());
       
  }
 
     

}

运行的时候它提示说Exception   in   thread   "main "   java.lang.NullPointerException
at   com.swtdesigner.TestFor.Setmeasure2(TestFor.java:16)
at   com.swtdesigner.TestFor.main(TestFor.java:22)



------解决方案--------------------
空指针错误。
measure本身是空,并没有measure[0]、measure[1]之类的项。如果要用,不要把数组之类的设为空,不然很容易产生类似的错误
------解决方案--------------------
public static double [] measure= null ;

measure[i] = bit.length*Math.random();
上面这句就有问题,因为measure是null,你把右边的值赋给左边measure[i],measure[i]当然是空的拉
------解决方案--------------------
对空对象操作的问题

public static int [] measure2= null ;
public static double [] measure= null
你的程序在使用measure数组的时候并没有初始划它,在for循环中(当然可以是其他地方,但必须是在使用前)初始化就可以了;


public class TestFor {
public static boolean bit []={true,false,false,true};
public static int [] measure2= null ;
public static double [] measure= null ;
public static double [] Setmeasure2()
{
for(int i=0;i <10;i++)
{
measure = new double[10];
measure[i] = bit.length*Math.random();
}
return measure;
}
public static void main(String [] args){

System.out.println(TestFor.Setmeasure2());

}



}