使用数组的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()
在一个新创建的类的实例上? 因为可能在操作mylab
是null
,因为该领域是在创建每个实例的初始化为空。