目录
7-1 sdut-oop-5 计算长方体和四棱锥的表面积和体积(类的继承) (10 分)
7-10 点 (10 分)
点是最简单的形,是几何图形最基本的组成部分。要求设计一个点类Point类,Point类包括:
- 坐标成员变量 int x,int y
- 成员变量x,y的setter gette方法,以及ToString方法
- 带参无参构造方法
- 重写hashcode和equals方法,判断两个点是否相同
- 实现接口Comparable,可以比较两个点的大小,比较规则是若第一个点x大,则第一个点大,第一个点x小则第一个点小,若相同,比较y,根据y值判断大小。
- 实现方法 int distance(Point p2),求两个点的距离(开平方根使用方法Math.sqrt())
测试类中main方法中,要求如下:
- 通过键盘输入2个点坐标,创建2个点对象
- 输出第一个点的信息(调用ToString方法),
- 比较他们的大小,如果第一点大于等于第二个点,输出true否则输出false
- 求这两个点的距离并输出。
### 输入格式:
请在这里写输入格式。例如:输入在一行中给出2个绝对值不超过1000的整数A和B。
输出格式:
输入两行,每行为一个点的坐标
输入样例:
在这里给出一组输入。例如:
4 6
6 7
4 5
3 2
输出样例:
在这里给出相应的输出。例如:
Point [x=4, y=6]
false
2
Point [x=4, y=5]
true
3
答案:
import java.util.Scanner;
interface Comparable {
void hashcode();
boolean equals(int x1, int y1, int x2, int y2);
}
class Point implements Comparable{
int x;
int y;
public String ToString(int x,int y) {
return "Point [x=" + this.x + "," + " y=" + this.y + "]";
}
public Point() {
super();
// TODO Auto-generated constructor stub
}
public Point(int x,int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public void hashcode() {
}
@Override
public boolean equals(int x1,int y1,int x2,int y2) {
if(x1 >x2) return true;
else if(x1 < x2) return false;
else {
if(y1 >y2) return true;
else if(y1 < y2) return false;
}
return true;
}
public int distance(Point p1,Point p2) {
return (int)Math.sqrt(Math.pow(p1.getX() - p2.getX(), 2) + Math.pow(p1.getY()-p2.getY(), 2));
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x1,y1;
x1 = sc.nextInt();
y1 = sc.nextInt();
Point point1 = new Point(x1,y1);
int x2,y2;
x2 = sc.nextInt();
y2 = sc.nextInt();
Point point2 = new Point(x2,y2);
System.out.println(point1.ToString(x1, y1));
System.out.println(point1.equals(x1, y1, x2, y2));
System.out.println(point1.distance(point1,point2));
}
}
写pta时要把除Main类外其他类前面的的public删除。
求两点之间距离:
Math.sqrt(Math.pow(p1.getX() - p2.getX(), 2) + Math.pow(p1.getY()-p2.getY(), 2));
7-7 员工类 (20 分)
假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资(都是整数): (1)经理(Manager)——每月获得一份固定的工资 (2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成 (3)一般工人(Work