返回的变量未从方法更新

时间:2014-07-06 17:28:34

标签: java methods

所以,我写了一个简短的代码来移动一个"框" (矩形)在右边。这部分效果很好。然后,我想看看有多少"步骤"这个盒子直到它停止。因此,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;
}

}

3 个答案:

答案 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));