【发布时间】:2017-10-05 07:23:01
【问题描述】:
从这里开始。我以前上过编程课,但对 Java 很陌生,没有丰富的经验。该程序来自 Mehran Sahami 在 Youtube 上发布的斯坦福讲座。 https://www.youtube.com/watch?v=YpZCKVG4s5k&t=1996s 代码从大约 32 分钟开始可见。这是一个显示弹跳球的简单图形程序。一个让我开始尝试设置的好地方,用另一个对象替换一个对象,并且通常习惯于语法与屏幕上显示的内容之间的关系。但是,我什至无法到达隐喻的起跑门!我尝试剪切并粘贴到 Sololearn 模拟器中,但得到了同样的错误。我认为它必须与 acm 库有关,但是 . . .什么?
代码在下面,错误消息在下面。
import acm.program.*;
import acm.graphics.*;
public class BouncingBall extends GraphicsProgram {
private static final int DIAM_BALL = 30;
private static final double GRAVITY = 3;
private static final int DELAY = 50;
private static final double X_START = DIAM_BALL / 2;
private static final double Y_START = 100;
//x velocity
private static final double X_VEL = 5;
//Y velocity determined by gravity and bounce
private static final double BOUNCE_REDUCE = 0.9;
//Starting coords
private double xVel = X_VEL;
private double yVel = 0.0;
//private instance variable
private GOval ball;
}
public void run(){
setup(){
while (ball.getX() < getWidth()) {
moveBall();
checkForCollision();
pause(DELAY);
}
}
//create and place ball
private void setup(){
ball=new GOval(X_START,Y_START,DIAM_BALL,DIAM_BALL);
ball.setFilled(true);
add(ball);
}
//update and move ball
private void moveBall(){
yVel+=GRAVITY;
ball.move(xVel,yVel);
}
//Collision detection
private void checkForCollision(){
if(ball.getY()>getHeight()-DIAM_BALL){
yVel=-yVel*BOUNCE_REDUCE;
double diff=ball.getY()-(getHeight()-DIAM_BALL);
ball.move(0,-2*diff);
}
}
}
}
“错误:Java:需要类、接口或枚举” 其中大约有十几个,指定 (22,12), (26,17), (27,17), (28,13), (33,13), (34,13) 。 . .
我有一种感觉,当我了解其中一些问题的原因时,我将能够解决所有问题。
提前致谢!
【问题讨论】:
-
Java ACM package的可能重复
-
我从上面的链接中得到了 acm。我尝试将 acm.jar 移动到目录中的各个位置,但似乎没有任何效果。无论我把它放在哪里,都会出现同样的错误。另外,文件的类型为“executable Jar File”,这与一些评论者的描述不同。
-
运行中的行是否应该有 setup(){ ?或设置();
-
我不这么认为。我传输了此处显示的代码。 setup() 位于下一行代码并嵌套在 run 函数的括号内。