所以,我写了一个简短的代码来移动一个"框" (矩形)在右边。这部分效果很好。然后,我想看看有多少"步骤"这个盒子直到它停止。因此,println应该打印控制台的大小和步数。但它打印的是“零”。
import acm.program.*;
import acm.graphics.*;
public class animation extends GraphicsProgram{
public void run(){
int x=0;
GRect box = new GRect(50,50);
add(box, 10,10);
moveBox(box, x);
println(getWidth() + ", " + x);
}
public int moveBox(GObject box, int x){
while(true){
box.move(10,0);
pause(50);
x++;
if (box.getX()==getWidth()) break;
}
return x;
}
}
答案 0 :(得分:3)
您在方法中返回x
,但是将其从调用者处丢弃。将其重新分配给来电者的x
变量
x = moveBox(box, x);
答案 1 :(得分:1)
return x;
只会说 - 我从这个方法返回一个值。
但调用者应该收到返回的值。
因此要接收返回值,我们应该将返回值赋给某个变量。
x = moveBox(box, x);
现在=左侧的x将返回值。
如果我们就这样写moveBox(box, x);
那么
返回值,但没有人收到它。
答案 2 :(得分:1)
您正在调用moveBox(box, x);
来返回一个值,但您没有任何能够捕获方法moveBox
中抛出的值的任何内容,您可以执行类似
int moves = moveBox(box, x);
System.out.println("Movements : "+moves);
或
System.out.println("Movements : "+moveBox(box, x));