2021-09-29 pta习题及知识点总结(3)

本文总结了Java编程中的类与对象设计,涵盖了员工类、圆环类、风扇类、长方体与四棱锥计算、圆与圆柱体设计等实例,涉及继承、多态和接口实现。通过对各个类的设计,讨论了对象属性、方法、构造器、接口实现以及计算几何和数据结构的应用。
摘要由CSDN通过智能技术生成

目录

7-10 点 (10 分)

输出格式:

输入样例:

输出样例:

 答案:

7-7 员工类 (20 分)

输入格式:

输出格式:

输入样例:

输出样例:

答案:

7-8 Ring类设计 (10 分)

输入格式:

输出格式:

输入样例:

输出样例:

答案:

7-9 设计一个风扇Fan类 (20 分)

输入格式:

输出格式:

输入样例:

输出样例:

答案: 

7-1 sdut-oop-5 计算长方体和四棱锥的表面积和体积(类的继承) (10 分)

输入格式:

输出格式:

输入样例:

输出样例:

答案:

7-4 设计圆和圆柱体 (10 分)

输入格式:

输出格式:

输入样例:

输出样例:

答案:

输入格式:

输出格式:

输入样例:

输出样例:

答案:


7-10 点 (10 分)

点是最简单的形,是几何图形最基本的组成部分。要求设计一个点类Point类,Point类包括:

  1. 坐标成员变量 int x,int y
  2. 成员变量x,y的setter gette方法,以及ToString方法
  3. 带参无参构造方法
  4. 重写hashcode和equals方法,判断两个点是否相同
  5. 实现接口Comparable,可以比较两个点的大小,比较规则是若第一个点x大,则第一个点大,第一个点x小则第一个点小,若相同,比较y,根据y值判断大小。
  6. 实现方法 int distance(Point p2),求两个点的距离(开平方根使用方法Math.sqrt())

测试类中main方法中,要求如下:

  1. 通过键盘输入2个点坐标,创建2个点对象
  2. 输出第一个点的信息(调用ToString方法),
  3. 比较他们的大小,如果第一点大于等于第二个点,输出true否则输出false
  4. 求这两个点的距离并输出。

### 输入格式:

请在这里写输入格式。例如:输入在一行中给出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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值