**

7-5 图形继承与多态 (50 分)

**
掌握类的继承、多态性及其使用方法。具体需求参见作业指导书。
2021-OO第06次作业-5指导书V1.0.pdf

解题报告
1.深入理解继承与多态的原理及用法
2.ArrayList常用方法及和数组的关系
3.泛型的应用
4.Arrays及Collections的简单应用
** 必须使用面向对象的封装性、继承性及多态性解题,否则一律判定为0分。**

输入格式:

从键盘首先输入三个整型值(例如a b c),分别代表想要创建的Circle、Rectangle及Triangle对象的数量,然后根据图形数量继续输入各对象的属性值(均为实型数),数与数之间可以用一个或多个空格或回车分隔。

输出格式:

如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边关系),则输出Wrong Format。
如果输入合法,则正常输出,输出内容如下(输出格式见输入输出示例):
各个图形的面积;
所有图形的面积总和;
排序后的各个图形面积;
再次所有图形的面积总和。

输入样例1:

1 1 1 2.3 3.2 3.2 6.5 3.2 4.2

输出样例1:

Original area:
16.62 10.24 5.68
Sum of area:32.54
Sorted area:
5.68 10.24 16.62
Sum of area:32.54

输入样例2:

0 2 2 2.3 2.5 56.4 86.5 64.3 85.6 74.6544 3.2 6.1 4.5

输出样例2:

Original area:
5.75 4878.60 2325.19 7.00
Sum of area:7216.54
Sorted area:
5.75 7.00 2325.19 4878.60
Sum of area:7216.54

输入样例3:

0 0 1 3 3 6

输出样例3:

Wrong Format


import java.util.Scanner;
import java.util.Arrays;//Shape类
abstract class Shape{public abstract double Mj();
}
//Circle类
class Circle extends Shape{private double r;public Circle(double r){super();this.r=r;}//getterpublic double getR(){return r;}//setterpublic void setR(double r){this.r = r;}public double Mj(){//计算圆面积return Math.PI*r*r;}
}
//Rectangle类
class Rectangle extends Shape{private double a,b;public Rectangle(double a, double b){super();this.a=a;this.b=b;}//getterpublic double A(){return a;}public double B(){return b;}//setterpublic void setA(double a){this.a=a;}public void setB(double b){this.b=b;}public double Mj(){//计算矩形面积return a*b;}
}
//Triangle类
class Triangle extends Shape{private double a;private double b;private double c;public Triangle(double a, double b, double c){this.a = a;this.b = b;this.c = c;}//getterpublic double A(){return a;}public double B(){return b;}public double C(){return c;}//setterpublic void setA(double a){this.a=a;}public void setB(double b){this.b=b;}public void setC(double c){this.c=c;}public double Mj(){//计算三角形面积double s1,s2;s1=(a+b+c)/2;s2=Math.sqrt(s1*(s1-a)*(s1-b)*(s1-c));return s2;}
}
//主类
public class Main{public static void main(String[] args){Scanner x = new Scanner(System.in);int q,w,e,gs=0,h;//个数q=x.nextInt();w=x.nextInt();e=x.nextInt();if(q<0||w<0||e<0){//如果不合法System.out.println("Wrong Format");System.exit(0);}h=q+w+e;double[] he=new double [q+w+e];double zh=0;int i,flag=0;Shape []c=new Circle[q];Shape []r=new Rectangle[w];Shape []t=new Triangle[e];for(i=0;i<q;i++){//三角形double bj;bj=x.nextDouble();//输入半径if(bj<=0){//判断是否合法flag=1;}c[i]=new Circle(bj);//把半径传入Circle类zh=zh+c[i].Mj();//计算总面积he[gs]=c[i].Mj();//把面积传入数组hegs++;}for(i=0;i<w;i++){//矩形double db;double cb;db=x.nextDouble();cb=x.nextDouble();//输入边长if(db<0||cb<0){//判断是否合法flag=1;}r[i]=new Rectangle(db,cb);//把边长传入Rectangle类zh=zh+r[i].Mj();//计算总面积he[gs]=r[i].Mj();//把面积传入数组hegs++;}for(i=0;i<e;i++){//三角形double a;double b;double d;double[] three=new double[3];three[0]=x.nextDouble();three[1]=x.nextDouble();three[2]=x.nextDouble();//输入边长Arrays.sort(three);//三边从小到大排序a=three[0];b=three[1];d=three[2];if(a<0||b<0||d<0||a+b<=d){//判断是否合法flag=1;}t[i]=new Triangle(a,b,d);//把边长传入Triangle类zh=zh+t[i].Mj();//计算总面积he[gs]=t[i].Mj();//把面积传入数组hegs++;}if(flag==1){//如果输入的不合法System.out.println("Wrong Format");System.exit(0);}System.out.println("Original area:");for (i=0;i<h;i++){System.out.printf("%.2f ",he[i]);}System.out.printf("\nSum of area:%.2f\n",zh);System.out.println("Sorted area:");Arrays.sort(he);for(i=0;i<h;i++){System.out.printf("%.2f ",he[i]);}System.out.printf("\nSum of area:%.2f",zh);}
}

7-5 图形继承与多态 (50 分)相关推荐

  1. PTA -- 题附代码(形状继承) (图形继承与多态)

    前言 时间:2020.5.13 内容:PTA练习题 7-2 jmu-Java-03面向对象基础-04-形状-继承 (30分) 7-1 图形继承与多态 (55分) 备注:7-1是7-2的进阶.回学校做题 ...

  2. Python|装饰器|执行时间|递归|动态属性|静态方法和类|继承和多态|isinstance类型判断|溢出|“魔法”方法|语言基础50课:学习记录(6)-函数的高级应用、面向对象编程、进阶及应用

    文章目录 系列目录 原项目地址: 第16课:函数的高级应用 装饰器(记录执行时间的例子) 递归调用 简单的总结 第17课:面向对象编程入门 类和对象 定义类 创建和使用对象 初始化方法 打印对象 面向 ...

  3. 7-1 sdut-oop-7 答答租车系统(类的继承与多态 面向对象综合练习) (30 分)

    7-1 sdut-oop-7 答答租车系统(类的继承与多态 面向对象综合练习) (30 分) 各位面向对象的小伙伴们,在学习了面向对象的核心概念--类的封装.继承.多态之后,答答租车系统开始营运了. ...

  4. Go 学习笔记(36)— 基于Go方法的面向对象(封装、继承、多态)

    Go 面向对象编程的三大特性:封装.继承和多态. 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式 继承:使得子类具有父类的属性和方法或者重新定义.追加属性和方法等 多态:不同对象中同种行为的不 ...

  5. 7-2 图形卡片分组游戏 (60 分)

    ** 7-2 图形卡片分组游戏 (60 分) ** 掌握类的继承.多态性使用方法以及接口的应用. 具体需求参考作业指导书2021-OO第07次作业-2指导书V1.0.pdf 输入格式: 在一行上输入一 ...

  6. 7-1 图形卡片排序游戏 (40 分)

    ** 7-1 图形卡片排序游戏 (40 分) ** 掌握类的继承.多态性使用方法以及接口的应用.详见[作业指导书2020-OO第07次作业-1指导书V1.0.pdf 输入格式: 首先,在一行上输入一串 ...

  7. BookCollectionSoftware - 图书管理(知识点糅合::类,对象,抽象类,接口,封装,继承,多态,顺序表)- java - 细节狂魔

    文章目录 前言 图书管理应实现的功能 准备工作 开始操作 先在book包,创建一个Book类,用来存储一本书的信息 小技巧: 根据小技巧来创造我们的 构造方法,公开的输入输出的接口,,还要重写的toS ...

  8. java 利用继承和多态设计三角形,圆矩形

    //郑州轻工业大学 //题号:实验三 第二题 //题目:利用继承和多态设计图形类.要求如下: (1)三角形属性为三个顶点坐标,矩形属性为其左上角和右下角两点坐标,圆为圆心和圆上任一点的坐标. (2)三 ...

  9. python(11)—— 面向对象编程基础(对象,类,属性,封装,继承,多态)

    把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化( ...

最新文章

  1. 华为机考HJ8合并表记录
  2. 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点...
  3. 记录Datagrid使用的一些事项
  4. Docker 容器技术 — Compose 编排
  5. 解决tomcat启动后访问页面中文乱码
  6. mmap函数_分析由 mmap 导致的内存泄漏
  7. 计算机一开机会做什么,新电脑开机需要做什么
  8. URL中使用IPv4,IPv6和主机名
  9. Amoeba 主从复制和读写分离
  10. 怎么用eclipse修改web工程的访问路径
  11. phpcms v9前台getshell
  12. python怎么做情感分析_如何用python进行情感分析
  13. 用css实现图片翻转
  14. nginx 504 Gateway Time-out 解决办法
  15. Windows安装SSH连接远程服务器以及文件下载
  16. c语言 鼠标指针图标,WIN7系统鼠标图案DIY!自己动手,美不胜收!-win7鼠标指针...
  17. win10 linux 无法下载,更新win10后不能安装ubuntu的解决方法
  18. centos安装aria2c_CentOS安装aria2+yaaw实现离线下载
  19. html如何使文本自动换行,html 文本自动换行
  20. Package inputenc Error: Unicode character , (U+FFØC) (inputenc) not set up for use with L aTeX. See

热门文章

  1. stm32单片机屏幕一直闪_用STM32做一个微型掌上示波器项目——终于鼓起在大牛前献丑的无比勇气...
  2. Android深入探究笔记--手势识别
  3. 万年历查询系统理解与功能增添
  4. codeforces 536a//Tavas and Karafs// Codeforces Round #299(Div. 1)
  5. 哲学家问题(java)的三个解法
  6. quartz定时程序无故停止并且没有错误
  7. malloc calloc realloc
  8. 神奇的linux发行版 tiny core linux
  9. windows phone 如何获得手机的分辨率
  10. MySql 你知道事务隔离是怎么回事吗?