老师出了一道题判断一个点是否在园内,叫我们补充完整,我填了半天,自己都整晕了,请高手帮忙看看哪里出现了问题,应该问题比较多吧。package project3;class Circle{   
    Point yuanxin;
    double radius;
    final double PI=3.14;     //一个圆自身的属性 
    
Circle(Point p,double r){
    Point s=new Point(2,4);
    p=s;
    r=1;
    }        //构造方法构造一个圆心和半径  
    
Circle(double r){
    Point yuanxin=new Point(0,0);
    r=2;
    }        //想构造一个以圆心为原点的圆
    
    void compute(){
    double zhou;
    zhou=2*PI*radius;
    System.out.println("圆的周长是"+zhou);}
    void aera(){
    double mianji;
    mian=PI*radius*radius;
    System.out.println("圆的面积是"+mianji);}      //这部分基本没用上,只是想表达圆而已
    
    boolean contains(Point p){       //这部分有问题,我不知道boolean怎么用???
    return true;
    System.out.println("这个点在圆内");
    return false;
    System.out.println("这个点不在园内");
    }
}class Point{     
    double x;
    double y;
    Point(double x,double y){
    x=0;y=0;
    }
}public class TestCircle {
    public static void main(String args[]){
    Circle c1=new Circle(3);   //以原点为圆心
    Point p1=new Point(2,4);
    System.out.println(c1.contains(p1));
    
    Point p2=new Point(2,4);
    Circle c2=new Circle(p2,1);
    Point p3=new Point(1,2);
    System.out.println(c2.contains(p3));
    
    }
}

解决方案 »

  1.   

    圆心不是已经知道了~~圆心到点之间的距离算出来判断在不在半径范围内~~就可以得到这个点落不落在这个园里面了~
    举例 圆心是原点  那么  (2,3)到圆心的距离就是 2^2+3^2 求根 然后判断~~
    所以 这个方法要重写 
    boolean contains(Point p){ //这部分有问题,我不知道boolean怎么用???
      return true;
      System.out.println("这个点在圆内");
      return false;
      System.out.println("这个点不在园内");
      }
    } boolean contains(Point p){ //这部分有问题,我不知道boolean怎么用???
     if(math.sqrt(p.x*p.x +p.y*p.y)<=r){
        return ture;//在圆内
     }else{
        return false;//在圆外
     }

      

  2.   


    //要改的地方不少,构造方法都要改
    class Circle{   
      Point yuanxin;
      double radius;
      final double PI = 3.14; //一个圆自身的属性  
        
      Circle(Point p,double r){
      yuanxin = p;
      radius = r;
      } //构造方法构造一个圆心和半径   
        
      Circle(double r){
      yuanxin = new Point(0,0);
      radius = r;
      } //想构造一个以圆心为原点的圆
        
      void compute(){
      double zhou;
      zhou=2*PI*radius;
      System.out.println("圆的周长是"+zhou);
      }
      
      void aera(){
      double mianji;
      mianji=PI*radius*radius;
      System.out.println("圆的面积是"+mianji);
      } //这部分基本没用上,只是想表达圆而已  boolean contains(Point p){ //这部分有问题,我不知道boolean怎么用???
      if(((p.x-yuanxin.x)*(p.x-yuanxin.x) +(p.y-yuanxin.y)*(p.y-yuanxin.y)) <= radius*radius){
      System.out.println(p.x+"  "+p.y+"  "+yuanxin.x+"  "+yuanxin.y+"  "+radius);
      System.out.println("这个点在圆内");
      return true;
      }else{
      System.out.println(p.x+"  "+p.y+"  "+yuanxin.x+"  "+yuanxin.y+"  "+radius);
      System.out.println("这个点不在园内");
      return false;
      }
      }
    }class Point{   
      double x;
      double y;
      
      Point(double x,double y){
    this.x = x;
    this.y = y;
      }
    }public class TestCircle {
      public static void main(String args[]){
      Circle c1=new Circle(3); //以原点为圆心
      Point p1=new Point(2,4);
      System.out.println(c1.contains(p1));
        
      Point p2=new Point(2,4);
      Circle c2=new Circle(p2,1);
      Point p3=new Point(1,2);
      System.out.println(c2.contains(p3));
        
      }
    }
      

  3.   

    boolean contains(Point p)
        { 
            //计算点p到圆心的距离
            double len = Math.sqrt(p.x * p.x + p.y * p.y);//这是到原点的距离
            //点在圆上不算在园内
            if (len < radius)
                return true;
            return false;
            /*
            //点在圆上算在园内
            if (len > radius)
                return false;
            return true;
             */
        }