有人看到我的错误吗?当我拿出所有数组的东西时,它的工作原理。 LogCat说我的错误是在第一个FOR循环的第一行(其中particlex [z] = random.nextInt(400);)
这是Android平台上的Java
//初始化
double particlex[];
double particley[];
double vx[];
double vy[];
boolean firstRun = true;
int pari = 5;
double f;
//方法
c.save();
c.drawColor(0xff000000);
Paint p = setShapeColor();
speed=1;
if(firstRun){
for (int z = 0; z<pari; z++){
particlex[z] = random.nextInt(400);
particley[z] = random.nextInt(400);
vx[z] = random.nextInt(4) -4;
vy[z] = random.nextInt(4) -4;
}
firstRun = false;
}
//
for (int z = 0; z< pari; z++){
f = 1 / Math.sqrt( (float)Math.pow((particlex[z]-mCenterX),2) + (float)Math.pow((particley[z]-mCenterY),2) );
vx[z] += (particlex[z]-mCenterX) * f;
vy[z] += (particley[z]-mCenterY) * f;
particlex[z] -= vx[z];
particley[z] -= vy[z];
c.drawCircle(mCenterX,mCenterY,50,p);
c.drawCircle((float)particlex[z],(float)particley[z],25,p);
}
c.restore();
if(shape!=8) endShape();
这是我的日志输出
01-10 21:09:22.147: D/AndroidRuntime(4403): Shutting down VM
01-10 21:09:22.147: W/dalvikvm(4403): threadid=1: thread exiting with uncaught exception (group=0x416c1d40)
01-10 21:09:22.148: E/AndroidRuntime(4403): FATAL EXCEPTION: main
01-10 21:09:22.148: E/AndroidRuntime(4403): Process: come.ClarkMU.Michael.LWP, PID: 4403
01-10 21:09:22.148: E/AndroidRuntime(4403): java.lang.NullPointerException
01-10 21:09:22.148: E/AndroidRuntime(4403): at com.ClarkMU.Michael.LWP.output.DrawShapes$CubeEngine.gravitySim(DrawShapes.java:588)
01-10 21:09:22.148: E/AndroidRuntime(4403): at com.ClarkMU.Michael.LWP.output.DrawShapes$CubeEngine.drawFrame(DrawShapes.java:204)
01-10 21:09:22.148: E/AndroidRuntime(4403): at com.ClarkMU.Michael.LWP.output.DrawShapes$CubeEngine.onSurfaceChanged(DrawShapes.java:146)
01-10 21:09:22.148: E/AndroidRuntime(4403): at android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:693)
01-10 21:09:22.148: E/AndroidRuntime(4403): at android.service.wallpaper.WallpaperService$Engine.attach(WallpaperService.java:781)
01-10 21:09:22.148: E/AndroidRuntime(4403): at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:1031)
01-10 21:09:22.148: E/AndroidRuntime(4403): at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:40)
01-10 21:09:22.148: E/AndroidRuntime(4403): at android.os.Handler.dispatchMessage(Handler.java:102)
01-10 21:09:22.148: E/AndroidRuntime(4403): at android.os.Looper.loop(Looper.java:136)
01-10 21:09:22.148: E/AndroidRuntime(4403): at android.app.ActivityThread.main(ActivityThread.java:5102)
01-10 21:09:22.148: E/AndroidRuntime(4403): at java.lang.reflect.Method.invokeNative(Native Method)
01-10 21:09:22.148: E/AndroidRuntime(4403): at java.lang.reflect.Method.invoke(Method.java:515)
01-10 21:09:22.148: E/AndroidRuntime(4403): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-10 21:09:22.148: E/AndroidRuntime(4403): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-10 21:09:22.148: E/AndroidRuntime(4403): at dalvik.system.NativeStart.main(Native Method)
01-10 21:09:24.063: D/AndroidRuntime(4449): Shutting down VM
01-10 21:09:24.063: W/dalvikvm(4449): threadid=1: thread exiting with uncaught exception (group=0x416c1d40)
01-10 21:09:24.065: E/AndroidRuntime(4449): FATAL EXCEPTION: main
01-10 21:09:24.065: E/AndroidRuntime(4449): Process: come.ClarkMU.Michael.LWP, PID: 4449
01-10 21:09:24.065: E/AndroidRuntime(4449): java.lang.NullPointerException
01-10 21:09:24.065: E/AndroidRuntime(4449): at com.ClarkMU.Michael.LWP.output.DrawShapes$CubeEngine.gravitySim(DrawShapes.java:588)
01-10 21:09:24.065: E/AndroidRuntime(4449): at com.ClarkMU.Michael.LWP.output.DrawShapes$CubeEngine.drawFrame(DrawShapes.java:204)
01-10 21:09:24.065: E/AndroidRuntime(4449): at com.ClarkMU.Michael.LWP.output.DrawShapes$CubeEngine.onSurfaceChanged(DrawShapes.java:146)
01-10 21:09:24.065: E/AndroidRuntime(4449): at android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:693)
01-10 21:09:24.065: E/AndroidRuntime(4449): at android.service.wallpaper.WallpaperService$Engine.attach(WallpaperService.java:781)
01-10 21:09:24.065: E/AndroidRuntime(4449): at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:1031)
01-10 21:09:24.065: E/AndroidRuntime(4449): at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:40)
01-10 21:09:24.065: E/AndroidRuntime(4449): at android.os.Handler.dispatchMessage(Handler.java:102)
01-10 21:09:24.065: E/AndroidRuntime(4449): at android.os.Looper.loop(Looper.java:136)
01-10 21:09:24.065: E/AndroidRuntime(4449): at android.app.ActivityThread.main(ActivityThread.java:5102)
01-10 21:09:24.065: E/AndroidRuntime(4449): at java.lang.reflect.Method.invokeNative(Native Method)
01-10 21:09:24.065: E/AndroidRuntime(4449): at java.lang.reflect.Method.invoke(Method.java:515)
01-10 21:09:24.065: E/AndroidRuntime(4449): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-10 21:09:24.065: E/AndroidRuntime(4449): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-10 21:09:24.065: E/AndroidRuntime(4449): at dalvik.system.NativeStart.main(Native Method)
01-10 21:09:25.588: I/Process(4449): Sending signal. PID: 4449 SIG: 9
code here
答案 0 :(得分:0)
您必须为数组分配内存
double particlex[];
double particley[];
double vx[];
double vy[];
那就是 - 用new运算符分配内存 - 例如
double[] particlex = new double[10]; // example
答案 1 :(得分:0)
您需要初始化数组。如果不这样做,它们只是空指针。
例如:
DrawShapes(int numShapes) {
particlex = new double[numShapes];
particley = new double[numShapes];
vx = new double[numShapes];
vy = new double[numShapes];
}
答案 2 :(得分:0)
因为您已初始化空数组。
你必须使数组的大小值至少为“pari”,因为在for循环中,你试图从索引0到索引pari - 1获取每个数组的元素。