题目: (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径
* 一个findAre()方法返回圆的面积。
*
* (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:
*
* public void printAreas(Circle c, int time)
* 在printAreas 方法中打印输入1到time之间的每个整个半径值,以及对应的面积。
*
* 例如,times 为5,则输出半径 1,2,3,4,5, 以及对应的圆面积。
*
*
* (3)在main方法中调用printAreas()方法,调用完毕后输出当前半径值。
参考代码:
package prectice;
/**
*
* (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径
* 一个findAre()方法返回圆的面积。
*
* (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:
*
* public void printAreas(Circle c, int time)
* 在printAreas 方法中打印输入1到time之间的每个整个半径值,以及对应的面积。
*
* 例如,times 为5,则输出半径 1,2,3,4,5, 以及对应的圆面积。
*
*
* (3)在main方法中调用printAreas()方法,调用完毕后输出当前半径值。
*
* @author ZZ1299
*
*/
public class Circle {
double radius;//半径
//求圆的面积
public double findArea(){
return Math.PI*radius*radius;
}
}
package prectice;
/**
* 考察参数的值传递
*
* 参数传递的编码练习
*
* 参数传递一般有两种,一种是“传值”,另一种是“传地址值”。传值是指在调用方法时,把参数的值传递给方法,
* 而传地址值则是给方法提供参数的地址值。Java中的参数传递方法都为传值调用。
* @author ZZ1299
*
*/
public class PassObject {
public static void main(String[] args){
PassObject test = new PassObject();
/**
* 第三题想这么考察
* 输出 Circle c = new Circle();中 System.out.println 的c.radius的半径,此时半径是0.0
* 当 test.printAreas(c, 5); 引用放进来之后
* Circle c = new Circle()的地址就被传进
* 由于public void printAreas(Circle c, int time) 中的 Circle c 传递的是地址
* 所以操作for循环的半径相当于在操作Circle c = new Circle()的 c
*
* 包括下文c.radius = time+1;半径被改成6,
* 实际上也是修改唯一的对象Circle c = new Circle()中的值
* 输出也因此改成6
*
*/
Circle c = new Circle();
test.printAreas(c, 5);
/**
* 如果用匿名方法
* 可以这么写 test.printAreas(new Circle(), 5);
*/
System.out.println("now radius is "+ c.radius);
/**
* 这里输出的是 now radius is 5.0
* for(int i = 1; i <=time; i++){ //①因为这里的time是5, 赋值结束之后i++变成6的时候没进去
//设置圆的半径
c.radius = i; ②所以这一行没有操作到
}
//③因此可以在这里重新赋值, 让半径加1
c.radius = time+1;
*
*/
}
public void printAreas(Circle c, int time){
System.out.println("Radius\t\tArea");
for(int i = 1; i <=time; i++){
//设置圆的半径
c.radius = i;
System.out.println(c.radius +"\t\t" +c.findArea());
/**
* System.out.println(c.radius +"\t\t" +c.findArea());当中,对于编译器来讲,
* c.findArea()返回的是一个double型的变量,因此这里可以看成是一个变量。
*
* 如果不适应这个写法,可以像下边这么写:
* double area = c.findArea();
* System.out.println(c.radius +"\t\t" +area);
* 这里其实和变量是一回事,只是没有给他显式添加变量而已
*/
}
//③因此可以在这里重新赋值, 让半径加1
c.radius = time+1;
/**
* 对于第三题,有人把它改成这样
* int i = 1;
* for(int i = 1; i <=time; i++){
//设置圆的半径
c.radius = i;
System.out.println(c.radius +"\t\t" +c.findArea());
}
//输出当前的i的值就可以了 因为i 已经不是在for中定义的了
c.radius = i;
*
*/
}
}
运行结果:
标签:printAreas,java,传递,radius,半径,new,Circle,方法,参数值 From: https://blog.51cto.com/u_14381196/6202389