设计一个Point(二维图中的点)类

题目内容:

设计一个Point(点)类,具体要求如下:

(1)该类具有成员变量x,y(int类型,表示点的横、纵坐标);

(2)定义一个有参构造方法Point(int x,int y),将其一对坐标值作为参数,其中x,y为给定坐标值;

(3)设计一个实例方法distance(Point p),实现求坐标轴上两个点的距离(Java中的开平方根方法为Math.sqrt()),其方法的声明为:int distance(Point p) 。

(4)编写Main类,在其main方法中,由键盘输入2个点的横、纵坐标值,来创建2个Point对象,再调用distance(Point p)方法计算出两点之间的距离并输出该值。


Point.java

public class Point {
    int x,y;
    Point(int x,int y){
        this.x =x;
        this.y =y;
    }
    double Distance(Point p){
        double r = Math.sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));   //注意加大括号
         return r;
    }
}


//如果要将结果变为int类型,使用强制转换

int Distance(Point p){
   int r = (int)Math.sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
     return r;
}
Test.java

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
    Point p1,p2;
    int x1,y1,x2,y2;
    Scanner sc = new Scanner(System.in);
    x1 = sc.nextInt();
    y1 = sc.nextInt();
    x2 = sc.nextInt();
    y2 = sc.nextInt();
    p1 = new Point(x1,y1);
    p2 = new Point(x2,y2);
        System.out.println(p1.Distance(p2));
    }
}

运行范例:

 

 

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Point)是一个表示二维平面上,它包含两个私有成员变量x和y,分别表示的横坐标和纵坐标。还包含一些公有成员函数,用于获取和设置的坐标,计算两之间的距离等操作。例如: class Point { private: double x; // 横坐标 double y; // 纵坐标 public: Point(); // 默认构造函数 Point(double x, double y); // 带参构造函数 double getX() const; // 获取横坐标 double getY() const; // 获取纵坐标 void setX(double x); // 设置横坐标 void setY(double y); // 设置纵坐标 double distance(const Point& p) const; // 计算两之间的距离 }; 其中,构造函数用于初始化的坐标,getX和getY函数用于获取的坐标,setX和setY函数用于设置的坐标,distance函数用于计算两之间的距离。在实现distance函数时,可以使用勾股定理计算两之间的距离: double Point::distance(const Point& p) const { double dx = x - p.x; double dy = y - p.y; return sqrt(dx * dx + dy * dy); } 这样,我们就可以使用来表示二维平面上的,并进行一些常见的操作,如计算两之间的距离等。 ### 回答2: 二维平面上的一个位置,它有两个坐标,分别是x和y。因此,设计一个表示二维平面上point,需要包含以下成员变量和成员函数: 1. 成员变量:x, y,分别表示的坐标, 2. 成员函数:构造函数和析构函数。其中,构造函数可以重载多个版本,以便于用户选择不同的方式进行初始化,如没有参数、有一个参数或者有两个参数的构造函数。析构函数用于释放point所占用的资源,一般情况下不需要特殊定义, 3. 成员函数:getX()和getY(),用于获得的坐标值。setX()和setY(),用于设置的坐标值。print()函数用于输出的坐标值, 根据上述要求,point的框架如下: class point{ private: double x, y; public: point();//无参构造函数 point(double x, double y);//有参构造函数 point(double a[]);//初始化坐标数组 double getX();//获取x坐标 double getY();//获取y坐标 void setX(double x);//设置x坐标 void setY(double y);//设置y坐标 void print();//输出的坐标 ~point();//析构函数 }; 接下来,我们分别对这些成员变量和成员函数进行详细介绍: 成员变量: private: double x, y; 成员变量包含在中,是为了方便存储和操作数据。这里定义了两个坐标x和y,并将它们声明为private型,即私有的成员变量。这种方式可以避免无意中对成员变量进行误操作。 构造函数: point();//无参构造函数 point(double x, double y);//有参构造函数 point(double a[]);//初始化坐标数组 构造函数是用来创建对象并初始化对象的,与同名。在point中,我们需要定义多条构造函数,以便于用户选择不同的方式对进行初始化。 无参构造函数:point(),用于创建一个空的,即x和y坐标都是0。 有参构造函数:point(double x, double y),用于用给定的坐标值创建一个。 初始化坐标数组:point(double a[]),用于将一个包含两个元素的数组作为参数,用这个数组初始化的坐标。 getX()和getY(): double getX();//获取x坐标 double getY();//获取y坐标 getX()和getY()函数分别用于获取的x坐标和y坐标。它们都是基本访问函数,因此在声明中加上const修饰符。 setX()和setY(): void setX(double x);//设置x坐标 void setY(double y);//设置y坐标 setX()和setY()函数分别用于设置的x坐标和y坐标,用于更改的坐标值。这两个函数都不需要返回值,它们都是修改成员变量的值。 print()函数: void print();//输出的坐标 print()函数用于输出的坐标值,可以用来查看的坐标值。它可以通过cout函数输出,也可以将坐标值存储在字符串中。 析构函数: ~point();//析构函数 析构函数是用来清理对象并释放对象所占用资源的函数。在point中,一般情况下不需要特殊定义析构函数,因为point并不涉及动态内存分配。如果中包含了指针型的成员变量,那么析构函数就需要删除这些指针所指向的动态内存。 ### 回答3: point一个表示二维平面上具有x坐标和y坐标的。该应该包含以下数据成员和成员函数: 数据成员: 1. x坐标(double型) 2. y坐标(double 型) 成员函数: 1. 构造函数:point应该至少有两个构造函数,用于初始化x坐标和y坐标,一个不带任何参数的默认构造函数,另一个带有两个参数用于初始化x和y坐标。 2. 复制构造函数:用于复制另一个point对象。 3. get_x()和get_y():用于获取的x坐标和y坐标。 4. set_x(double x)和set_y(double y):用于设置的x坐标和y坐标。 5. distance_to(const point& p):用于计算当前与另一个p之间的距离。通过计算勾股定理得到两个的距离。 6. to_string():用于将该转换为字符串式,例如"(x, y)"。 在这个point中,我们可以定义一些运算符重载函数。例如: 1. “+”运算符重载:使用该运算符,可以实现两个point对象相加的操作,返回一个新的point对象,其x和y坐标都是其中两个的坐标之和。 2. “-”运算符重载:使用该运算符,可以实现两个point对象相减的操作,返回一个新的point对象,其x和y坐标都是其中两个的坐标之差。 3. “<<”运算符重载:使用该运算符,可以实现将point对象的x和y坐标以字符串式输出。 这些成员函数和数据成员足以完成point设计,可以方便地表示二维平面上的,并对这些进行一些基本的运算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值