2014-01-11 5 views
-1

Кто-нибудь видит мою ошибку? Когда я беру все содержимое массива, он работает. LogCat говорит моя ошибка на первой строке первого цикла FOR (где particlex [г] = random.nextInt (400);)Ошибка кастинга в программе Java?

Это в Java на Android платформе

// инициализируется

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

Он говорит, что есть NPE. У вас есть ссылка на массив, но нет массива. –

+1

Где вы инициализировали размер ваших массивов? Вы создали свои массивы, но не определили размер. –

ответ

0

Вы должны выделить память для ваших массивов

double particlex[]; 
double particley[]; 
double vx[]; 
double vy[]; 

То есть - выделить память с новым оператором - например

double[] particlex = new double[10]; // example 
+0

Это было бы решением ... Спасибо – user3152459

0

Вам необходимо инициализировать массивы. Без этого они всего лишь нулевые указатели.

Например:

DrawShapes(int numShapes) { 
    particlex = new double[numShapes]; 
    particley = new double[numShapes]; 
    vx = new double[numShapes]; 
    vy = new double[numShapes]; 
} 
0

Поскольку вы настроите пустые массивы.

Вы должны сделать массивы имеют по крайней мере, значение размера из «Pari», потому что в течение цикла вы пытаетесь получить элементы каждого массива из индекса 0 до индекса Pari - 1.

Смежные вопросы