我在java中创建了一个程序,该程序应该创建10个随机出现和移动的balle,这些球 - 线程应该并行运行,不幸的是程序不能编译。有谁知道为什么? 我收到以下错误每个主题:Java:平行移动球
package movement;
import java.applet.Applet;
import java.awt.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
public class Ball {
int x;
int y;
int radius = 10;
public Graphics g;
int dx, dy, n = 0;
Ball(int x, int y) {
this.x = x;
this.y = y;
}
public void move() {
Random randomX = new Random();
Random randomY = new Random();
Random randomN = new Random();
paint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
x = x + dx;
y = y + dy;
dx = (int) (Math.pow(-1, n) * randomX.nextInt(5));
dy = (int) (Math.pow(-1, n) * randomY.nextInt(5));
n = randomN.nextInt(10) + 1;
}
public void paint() {
g.setColor(Color.black);
g.fillOval(x + 100, y + 100, radius, radius);
}
}
package movement;
class BallMovement implements Runnable {
private final Ball ball;
BallMovement(Ball ball) {
this.ball = ball;
}
@Override
public void run() {
while (true) {
ball.move();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package movement;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
public class StartingPoint extends Applet {
public int startX, startY;
private static final int nbBalles = 10;
private static final long serialVersionUID = 1L;
ArrayList<Ball> BallList = new ArrayList<Ball>();
@Override
public void init() {
for (int i = 0; i < nbBalles; i++) {
Random randX = new Random();
Random randY = new Random();
startX = randX.nextInt(500) + 1;
startY = randY.nextInt(500) + 1;
BallList.add(new Ball(startX, startY));
}
}
@Override
public void start() {
Iterator<Ball> it = BallList.iterator();
while (it.hasNext()) {
Ball ball = it.next();
Thread thread = new Thread(new BallMovement(ball));
thread.start();
}
}
@Override
public void stop() {
// TODO Auto-generated method stub
}
}
例外:
Exception in thread "Thread-5"
java.lang.NullPointerException at movement.Ball.paint(Ball.java:40)
at movement.Ball.move(Ball.java:23)
at movement.BallMovement.run(BallMovement.java:13)
at java.lang.Thread.run(Thread.java:695)
编译错误告诉你什么? – Reimeus 2014-10-10 11:23:37
对不起,我忘了添加错误,Exception in thread“Thread-5”java.lang.NullPointerException \t at movement.Ball.paint(Ball.java:40) \t at movement.Ball.move(Ball.java :23) \t它在编译,但你在运行时得到一个异常。在移动时.BallMovement.run(BallMovement.java:13) \t在java.lang.Thread.run(Thread.java:695) – 2014-10-10 11:26:17
编译。 – Magnilex 2014-10-10 11:28:14