我有以下代码,它有效。它在applet窗口中绘制了一个小脸。这是一项我不太懂的任务,所以我不得不复制很多。我现在对它的大部分理解除了cx和cy定义在哪里了?或者行
addFace(getWidth() / 2, getHeight() / 2);
通过将两个变量(x,y)插入到其方法中也有两个变量的其他方法来定义它。我想我的问题是。当你在一个方法的括号中有某些东西然后插入你调用的任何其他方法,只要它具有相同的东西?例如:
如果我有
funTimes(48, 98 / 3, 3 + 5);
然后调用
funTimes(x,y,z);{
int i = x + y - z;
println(i);
}
稍后在代码中,x,y,z会取其他三个整数的值吗?
以下是相关代码。谢谢你!
import java.awt.Color;
import acm.program.*;
import acm.graphics.*;
import java.awt.*;
public class robotface extends GraphicsProgram{
/*setting values for dimensions */
private static final int HEAD_WIDTH = 100;
private static final int HEAD_HEIGHT = 150;
private static final int EYE_RADIUS = 10;
private static final int MOUTH_WIDTH = 60;
private static final int MOUTH_HEIGHT = 20;
public void run(){
addFace(getWidth() / 2, getHeight() / 2);
}
private void addFace(double cx, double cy){
addHead(cx,cy);
addEye(cx - HEAD_WIDTH / 4, cy - HEAD_HEIGHT / 4);
addEye(cx + HEAD_WIDTH / 4, cy - HEAD_HEIGHT / 4);
addMouth(cx, cy + HEAD_HEIGHT / 4);
}
private void addHead(double cx, double cy){
double x = cx - HEAD_WIDTH / 2;
double y = cy - HEAD_HEIGHT / 2;
GRect head = new GRect(x,y,HEAD_WIDTH,HEAD_HEIGHT);
head.setFilled(true);
head.setFillColor(Color.GRAY);
add(head);
}
private void addEye(double cx, double cy){
double x = cx - EYE_RADIUS;
double y = cy - EYE_RADIUS;
GOval eye = new GOval(x,y,EYE_RADIUS*2,EYE_RADIUS*2);
eye.setFilled(true);
eye.setFillColor(Color.YELLOW);
eye.setColor(Color.YELLOW);
add(eye);
}
private void addMouth(double cx, double cy){
double x = cx - MOUTH_WIDTH / 2;
double y = cy - MOUTH_HEIGHT / 2;
GRect mouth = new GRect(x,y,MOUTH_WIDTH,MOUTH_HEIGHT);
mouth.setFilled(true);
mouth.setColor(Color.BLACK);
mouth.setFillColor(Color.WHITE);
add(mouth);
}
}
答案 0 :(得分:0)
实际上这两个是在double类型的函数定义时定义的临时变量:
private void addFace(double cx, double cy)
用于执行该方法中的操作。您还可以为这些变量使用其他名称。
getWidth()
和getHeight()
是获取窗口width
和height
的内置函数。
答案 1 :(得分:0)
传入参数时会自动定义。 E.g。
public static void callFoo() {
foo(10, 10);
}
public static void foo(int bar1, int bar2) {
//Do something.
System.out.println(bar1 + bar2);
}
在这个例子中,当调用foo()时,它会给它两个int
个参数。在foo()方法中,bar1和bar2会自动定义传入的内容。
另请注意,方法执行完毕后无法使用bar1和bar2。这是因为它们存储在堆栈中。