老师出了一道题判断一个点是否在园内,叫我们补充完整,我填了半天,自己都整晕了,请高手帮忙看看哪里出现了问题,应该问题比较多吧。
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)); }}