编译一练习题(照书抄的),出现“找不到符号的问题“,搞晕了:
K:\Java-Working\CH02-OK>javac Example2_1.java
Example2_1.java:87: 错误: 找不到符号
circle1.setRadius=( 6 ); //设置对象circle1的半径为6
^
符号: 变量 setRadius
位置: 类型为Circle的变量 circle1
Example2_1.java:91: 错误: 找不到符号
circle2.setRadius=( 9 ); //设置对象circle2的半径为9
^
符号: 变量 setRadius
位置: 类型为Circle的变量 circle2
2 个错误
----------------------
附原程序:
/*装载所必须的程序包*/
import java.lang.*;
import java.io.*;
/*定义一个表示园的类*/
class Circle {
/*类的私有属性*/
private double x; //圆心的x轴坐标 x
private double y; //圆心的x轴坐标 y
private double radius; //圆 半径:radius
/*类的公共属性*/
public final double PI=3.141592653;
/*类的私有方法*/
private double distanceX(double x0) {
return x-x0;
}
private double distanceY(double y0) {
return y-y0;
}
/*类的公共方法*/
public double distanceTo(double x0,double y0) {
return Math.sqrt(distanceX(x0)*distanceX(x0) + distanceY(y0)*distanceY(y0));
}
public boolean inCircle(double x0, double y0) {
//判断点(x0,y0)是否在园的内部
return distanceTo(x0, y0) < radius;
}
public void moveTo(double x0,double y0) { //设置圆心位置
x=x0; //在类定义内部可以直接改变私有属性的值
y=y0;
return;
}
public void getPosition() { //输出圆心的位置
System.out.println( "x=" + x ); //在类定义内部可以直接使用私有属性
System.out.println( "y=" + y );
return;
}
public void setRadius(double r) { //设置圆的半径
radius = r;
return;
}
public double getRadius() { //取得园的半径值
return radius;
}
public double getDiameter () { //计算园的直接长度:2*R
return 2*radius;
}
public double getCircumference () { //计算园的周长:PI*D
return PI*getDiameter ();
}
public double getArea() { //计算园的面积:PI*R*R
return PI*radius*radius;
}
public double getCurvature () { //计算园的 曲率:1/R
return 1.0/radius;
}
}
public class Example2_1 { // 本 Java 程序文件的主类
public Example2_1 () { } // 类Example2_1的结构方
public static void main ( String[ ] argv ) { // Java 程序入口主函数
System.out.println( "This is Example2_1." ); //Example2_1
Circle circle1; //定义对象circle1
Circle circle2; //定义对象circle2
circle1 = new Circle(); //新建对象circle1
circle2 = new Circle(); //新建对象circle2
/*对象的私有成员不可以直接被外面的程序访问
如果去掉下面两行的注解,Java在编译时会报错*/
//circle1.radius=6; //非法访问对象私有成员属性
//circle1.distanceY(0,0); //非法访问对象私有成员方法
/*公共方法,可以直接访问,用来改变私有属性的值*/
circle1.setRadius=(6); //设置对象circle1的半径为6
//输出circle1的半径,验证上一行的执行结果
System.out.println("circle1's Radius: " + circle1.getRadius() );
circle2.setRadius=( 9 ); //设置对象circle2的半径为9
System.out.println( "PI: " + circle2.PI );
//访问circle2的公共属性值
circle1.moveTo(0,0); //设置园circle1的圆心位置为(0,0)
circle2.moveTo(3,4); //设置园circle的2圆心位置为(3,4)
circle2.getPosition(); //输出园circle2的圆心位置
/*公共方法,可以直接访问,输出circle2的圆心到坐标的距离*/
System.out.println("The distance from circle1's center to (0,0) is: " +circle2.distanceTo(0,0));
System.out.println("The point (0,0) in circle2?" +circle2.inCircle(0,0) );
System.out.println("The diameter of circle1 is: " + circle1.getDiameter() );
System.out.println("The circumference of circle1 is: "+ circle1.getCircumference() );
System.out.println("The area of circle1 is: "+ circle1.getArea() );
System.out.println("The curvature of circle2 is: "+ circle2.getCurvature() );
System.out.println("Congratulations! You've done succssfully!");
}
}