A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊占江 中级黑马   /  2012-8-6 20:45  /  1918 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 樊占江 于 2012-8-6 21:27 编辑

class Point{
double x;
double y;

Point(double x1, double y1){
x = x1;
y = y1;
}

double getDistance(Point o){
return (x-o.x)*(x-o.x)+(y-o.y)*(y-o.y);
}
} class Circle{
static private Point o;
static private double radius;
Circle (Point p, double r){
o = p;
radius = r;
}
public static void main(String[] args){
Point p = new Point(3,4);
p.getDistance(p);
Circle c = new Circle(p, 10);
double q = radius*radius;
if(p.getDistance(p)>q){
System.out.println("该点在圆内");
}
else{
System.out.println("该点不在圆内");
}
}
}
结果总是不在圆内,我不知道那里出问题呢?各位帮我看看吧 思路什么的,还有哪里不对。
谢谢

点评

建议将代码贴在代码区发布,那样会清晰很多!  发表于 2012-8-6 22:28

8 个回复

倒序浏览
本来想帮你改代码呢,但是发现,你不是不会写代码,而是思路有点乱,
还是帮你说明你的问题吧。
首先,先说小的:double getDistance(Point o){
return (x-o.x)*(x-o.x)+(y-o.y)*(y-o.y);
}
你是要求两点距离么?为什么没有平方根?
其次,主要原因
p.getDistance(p)  求P点到P点的距离?
它肯定是0,所以肯定比一个double q = radius*radius;  10*10=100小,所以肯定“该点不在圆内”。
思路吧,我觉得你应该是求圆心和点的距离,和半径比是吧,相信你能行的
回复 使用道具 举报
其实没什么问题,只要知道两点距离大于半径,则在圆外。
if(p.getDistance(p)>q){//这里反过来p.getDistance(p)<q,该点才会在圆内。
System.out.println("该点在圆内");
}
else{
System.out.println("该点不在圆内");

至于程序结果,圆心自然永远都要在圆内的。
回复 使用道具 举报
看你代码好累,

class Point
{
        double x;
        double y;

        Point(double x1, double y1)
        {
                x = x1;
                y = y1;
        }

        double getDistance(Point o)
        {
                //return (x-o.x)*(x-o.x)+(y-o.y)*(y-o.y);
                return 500;
        }
}
class Circle
{
        static private Point o;
        static private double radius;
        Circle (Point p, double r){
        o = p;
        radius = r;
}
public static void main(String[] args)
        {
                Point p = new Point(1,2);
                p.getDistance(p);
                Circle c = new Circle(p, 10);
                double q = radius*radius;
                if(p.getDistance(p)>q)
                {
                        System.out.println("该点在圆内");
                }
        else
        System.out.println("该点不在圆内");
       
        }
}
我觉得李龙说的有道理啊,
你不如试试eturn (x-o.x)*(x-o.x)+(y-o.y)*(y-o.y);先注释了,直接注释成500试一下就知道了
回复 使用道具 举报
李龙276596456 发表于 2012-8-6 21:03
本来想帮你改代码呢,但是发现,你不是不会写代码,而是思路有点乱,
还是帮你说明你的问题吧。
首先,先说 ...

嗯!谢谢
回复 使用道具 举报
王舜民 发表于 2012-8-6 21:24
看你代码好累,

class Point

嗯!今天精神不大好,所以思路有点乱
回复 使用道具 举报
虽然我不会java 但解决问题的思路可以是不会java的人都可以想得出来的
比较两点到原点的距离我想是不是可以这样算
原点为 o1,o2
一点为x1,y1
另一点为 x2,y2
然后比较大小:|x1-o1|+|y1-o2|         |x2-o1|+|y2-o1|
试试看 我只是想像出来的 没有实践也没论证        
回复 使用道具 举报
double q = radius*radius;
radius没定义。
p.getDistance(p)肯定等于0。如果radius定义了,那么0小于半径的平方是对的,所以就不在圆内了。
回复 使用道具 举报
郑彬 发表于 2012-8-6 21:38
double q = radius*radius;
radius没定义。
p.getDistance(p)肯定等于0。如果radius定义了,那么0小于半径 ...

                  聪明
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马