Java程序中的转换错误?

时间:2014-01-11 02:13:18

标签: java android

有人看到我的错误吗?当我拿出所有数组的东西时,它的工作原理。 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

3 个答案:

答案 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获取每个数组的元素。

相关问题