当前位置: 代码迷 >> J2SE >> 写了一个判断一个点是否在院内的程序自己都混乱了
  详细解决方案

写了一个判断一个点是否在院内的程序自己都混乱了

热度:151   发布时间:2016-04-24 02:16:21.0
写了一个判断一个点是否在院内的程序自己都混乱了,求助
老师出了一道题判断一个点是否在园内,叫我们补充完整,我填了半天,自己都整晕了,请高手帮忙看看哪里出现了问题,应该问题比较多吧。

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));
   
  }
}


------解决方案--------------------
圆心不是已经知道了~~圆心到点之间的距离算出来判断在不在半径范围内~~就可以得到这个点落不落在这个园里面了~
举例 圆心是原点 那么 (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;//在圆外
 }


------解决方案--------------------
Java code
//要改的地方不少,构造方法都要改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));          }}
  相关解决方案