使用数组的NullPointerException

我有一项活动:

...
double []mylab=new double [100];

public void compute(){
             ...
             double mytime=Double.parseDouble(timing.getText().toString().trim());
             //fill array
             for (int i=0;i<=mytime;i++){

                 mylab[i]=Math.exp(i);
                 //Arrays.fill(mylab,Math.exp(i));

             }

            ...
             i.putExtra("mylab",mylab);
             startActivity(i);  
         }

并在linegraph活动中:

...
private double [] mylab =new double [100];

public double []  getmylab(){ return this.mylab;} 
public void setmylab(double [] mylab){ this.mylab=mylab;} 

...
public void onCreate(Bundle savedInstanceState){

Bundle extras=getIntent().getExtras();

double [] mylab=extras.getDoubleArray("mylab");
setmylab(mylab);
..
public Intent getIntent(Context context){

double []mylab=getmylab();

ArrayList<Double> x =new ArrayList<Double>();
ArrayList<Double> y =new ArrayList<Double>();


        //fill x,y values
         for (int i=0;i<=20;i++){ 
             x.add(mytime/i);
         } 

       for (int i=0;i<=20;i++){ 
         y.add(mylab[i]);

       } 
    ...

我想错误在于我填充数组的位置?

------------- logcat的------------------------------

致命例外:main E / AndroidRuntime(461):

java.lang.RuntimeException:无法启动活动ComponentInfo

java.lang.NullPointerException E / AndroidRuntime(461):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)

E / AndroidRuntime(461):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)

E / AndroidRuntime(461):在android.app.ActivityThread.access $ 2300(ActivityThread.java:125)

E / AndroidRuntime(461):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)

E / AndroidRuntime(461):在android.os.Handler.dispatchMessage(Handler.java:99)

E / AndroidRuntime(461):在android.os.Looper.loop(Looper.java:123)

E / AndroidRuntime(461):在android.app.ActivityThread.main(ActivityThread.java:4627)

E / AndroidRuntime(461):在java.lang.reflect.Method.invokeNative(Native方法)

E / AndroidRuntime(461):在java.lang.reflect.Method.invoke(Method.java:521)

E / AndroidRuntime(461):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)

E / AndroidRuntime(461):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

E / AndroidRuntime(461):在dalvik.system.NativeStart.main(本机方法)E / AndroidRuntime(461):引起:

java.lang.NullPointerException E / AndroidRuntime(461):at com ... LineGraph.getIntent(LineGraph.java:109)E / AndroidRuntime(461):

在线..LineGraph.onCreate(LineGraph.java:80)E / AndroidRuntime(461):

在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

E / AndroidRuntime(461):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)


如果myTime> myLab数组的大小,您将得到一个ArrayIndexOutOfBounds错误

double mytime=Double.parseDouble(timing.getText().toString().trim());
             //fill array
             for (int i=0;i<=mytime;i++)
        mylab[i]=Math.exp(i);
                 //Arrays.fill(mylab,Math.exp(i));
             }

发生该错误是因为您正在访问不存在的数组索引。 最有可能的是你在填充阵列时。

         // make sure `mytime` is less or equal than 100
         for (int i=0;i<=mytime;i++){
             mylab[i]=Math.exp(i);
             //Arrays.fill(mylab,Math.exp(i));
         }

你可能在打电话吗?

Intent getIntent()

在一个新创建的类的实例上? 因为可能在操作mylabnull ,因为该领域是在创建每个实例的初始化为空。

链接地址: http://www.djcxy.com/p/31427.html

上一篇: NullPointerException using arrays

下一篇: Android Condition checking if else statements?