编译报错:ClassMemberDemo.java:22:找不到符号 
                                  变量:PI
                                  位置:类Math             return Math.PI*radius*radius;(唉,不知道是怎么回事)class Point
{
int x,y;
public Point(int x,int y)
{
this.x=x;
this.y=y;
}
}
class Circle
{
Point center= new Point(0,0);
double radius;
public Circle(int x,int y,double r)
{
center.x=x;
center.y=y;
radius =r;
}
public double area()
{
return Math.PI*radius*radius;
  }
}public class ClassMemberDemo
{
public static void main(String[] args)
{
 Circle c1=new Circle(100,100,10);
 System.out.println("Circle center point is:"+c1.center.x+","+c1.center.y);
 System.out.println("Circle radius is:"+c1.radius);
 System.out.println("Circle area is:"+ c1.area());
}
}

解决方案 »

  1.   

    报错的指示符指向Math.PI中间的那个圆点。
      

  2.   

    楼上几位大哥,谢谢你们帮我看程序,这代码是没错。后来我加了一条语句就编译成功了:import java.lang.Math;但是我的第二个问题就来了:lang包不是自动导入的吗?为什么你们的可以不需要加这语句,而我的需要手动导入lang包。是不是我的JDK设置错了?但是我之前写了很多小程序了啊。都没这个问题出现。如果是JDK设置错了,那该怎么用设置啊。(注:我没用Eclipse等工具,我是用UltraEdit写代码的)
      

  3.   

    运行完全正常
    结果
    Circle center point is:100,100
    Circle radius is:10.0
    Circle area is:314.1592653589793
      

  4.   

     大哥,不是这个问题。我的结论是:无法编译是因为没有导入Math类。因为在写了import java.lang.Math;这条语句后,程序就可以编译运行了。所以你说的中文圆点的原因是不成立的。我的问题是:为什么需要手动导入lang包里面的Math类了????是JDK哪里出现了问题???
      

  5.   

    你不把他import java.lang.Math导入,Math类就找不到。
      

  6.   

    lang包不是 自动导入的吗???
      

  7.   


    我的也没写 import java.lang.Math 也没报错啊。。  
      

  8.   

    你应该弄明白java的默认包是什么,是怎么导入的 
    一般是运行时,java虚拟机通过设置的classpath找到lib下的包 
    你想让它自动找到,就加到classpath中就可以了你的classpath里面要加入  '.'