**

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

**
掌握类的继承、多态性使用方法以及接口的应用。详见[作业指导书2020-OO第07次作业-1指导书V1.0.pdf

输入格式:

首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如: 1 3 4 2 1 3 4 2 1 3 0
然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。

输出格式:

如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边不能组成三角形),则输出Wrong Format。
如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:
排序前的各图形类型及面积,格式为图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n ,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格;
排序后的各图形类型及面积,格式同排序前的输出;
所有图形的面积总和,格式为Sum of area:总面积值。
解题报告
1.继承、多态的应用;
2.ArrayList泛型的应用方法
3.Comparable接口及泛型的应用
4.单一职责原则的应用
5.“开-闭”原则的应用

输入样例1:

1 5 3 2 0

输出样例1:

Wrong Format

输入样例2:

4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 3.5

输出样例2:

The original list:
Trapezoid:1.14 Rectangle:3.22 Circle:98.52 Triangle:4.02
The sorted list:
Circle:98.52 Triangle:4.02 Rectangle:3.22 Trapezoid:1.14
Sum of area:106.91

输入样例3:

4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 8.4

输出样例3:

Wrong Format


import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.TreeSet;//Chulishuju类
class Chulishuju{ArrayList<Card> cardList=new ArrayList<>();//存边长public Chulishuju(ArrayList<Integer> c){for (Integer a:c){if (a==0){break;}else {switch (a) {case 1 -> {Card a1 = new Card(new Circle(Main.x.nextDouble()));cardList.add(a1);a1.getShape().setName("Circle");}case 2 -> {Card b1 = new Card(new Rectangle(Main.x.nextDouble(), Main.x.nextDouble()));cardList.add(b1);b1.getShape().setName("Rectangle");}case 3 -> {Card c1 = new Card(new Triangle(Main.x.nextDouble(), Main.x.nextDouble(), Main.x.nextDouble()));cardList.add(c1);c1.getShape().setName("Triangle");}case 4 -> {Card d1 = new Card(new Trapezoid(Main.x.nextDouble(), Main.x.nextDouble(), Main.x.nextDouble()));cardList.add(d1);d1.getShape().setName("Trapezoid");}}}}}public boolean pdsfhf(){//判断数据是否合法boolean kp=true;for (Card a:cardList){if (!a.getShape().pdsfhf()){kp=false;break;}}return kp;}public void cardSort(){//排序TreeSet<Card> kp = new TreeSet<>(cardList);for (Card a : kp) {System.out.print(a.getShape());}}public double getZmj(){//计算总面积double zmj=0;for (Card a : cardList) {zmj=zmj+a.getShape().Mj();}return zmj;}public void show(){//输出System.out.println("The original list:");for (Card a : cardList) {System.out.print(a.getShape());}System.out.println("\nThe sorted list:");cardSort();System.out.printf("\nSum of area:%.2f\n",getZmj());}
}
//Card类
class Card implements Comparable<Card>{private Shape shape;//创建无参构造方法public Card(){}//创建带参构造方法public Card(Shape shape) {this.shape = shape;}//getterpublic Shape getShape() {return shape;}//setterpublic void setShape(Shape shape){this.shape=shape;}public int compareTo(Card card) {return -(int)(shape.Mj()-card.getShape().Mj());}
}
//Shape类
abstract class Shape {private String name;//创建无参构造方法public Shape() {}//创建带参构造方法public Shape(String name) {this.name = name;}//getterpublic String getName() {return name;}//setterpublic void setName(String name) {this.name = name;}//面积public abstract double Mj();//判断数据是否合法public abstract boolean pdsfhf();public String toString() {return getName()+":"+String.format("%.2f ",Mj());}
}
//Circle类
class Circle extends Shape{private double r;//创建无参构造方法public Circle(){}//创建带参构造方法public Circle(double r){this.r=r;}//getterpublic double getR(){return r;}//setterpublic void setR(double r){this.r = r;}//判断数据是否合法public boolean pdsfhf() {return r>0;}//计算圆面积public double Mj(){return Math.PI*r*r;}
}
//Rectangle类
class Rectangle extends Shape{private double a,b;//创建无参构造方法public Rectangle(){}//创建带参构造方法public Rectangle(double a, double b){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 boolean pdsfhf() {return a>0&&b>0;}//计算矩形面积public double Mj(){return a*b;}
}
//Triangle类
class Triangle extends Shape{private double a;private double b;private double c;//创建无参构造方法public Triangle() {}//创建带参构造方法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 boolean pdsfhf(){Double[] bc=new Double[3];bc[0]=a;bc[1]=b;bc[2]=c;boolean z=true;Arrays.sort(bc);if(a<=0&&b<=0&&c<=0){z=false;}else{if(!(a+b>c)){z=false;}}return z;}//计算三角形面积public double Mj(){double s1,s2;s1=(a+b+c)/2;s2=Math.sqrt(s1*(s1-a)*(s1-b)*(s1-c));return s2;}
}
//Trapezoid类
class Trapezoid extends Shape{private double c,b,h;//创建无参构造方法public Trapezoid() {}//创建带参构造方法public Trapezoid(double c, double b, double h) {this.c = c;this.b = b;this.h = h;}//getterpublic double C(){return c;}public double B(){return b;}public double H(){return h;}//setterpublic void setC(double a){this.c=c;}public void setB(double b){this.b=b;}public void setH(double c){this.h=h;}//判断数据是否合法public boolean pdsfhf() {return b>0&&c>0&&h>0;}//计算梯形面积public double Mj() {return (c+b)*h/2;}
}//主类
public class Main{public static Scanner x = new Scanner(System.in);//在Main类中定义一个静态Scanner对象,这样在其它类中如果想要使用该对象进行输入,则直接使用Main.input.next...即可(避免采坑)public static void main(String[] args){ArrayList<Integer> xzlist = new ArrayList<>();int xz;xz=x.nextInt();while (xz!=0){//循环输入第一行数据if(xz>4||xz<0){//如果输入的数据不合法System.out.println("Wrong Format");System.exit(0);}xzlist.add(xz);xz=x.nextInt();}//检查数据是否合法Chulishuju chulishuju=new Chulishuju(xzlist);if(!chulishuju.pdsfhf()){System.out.println("Wrong Format");System.exit(0);}chulishuju.show();x.close();}
}

7-1 图形卡片排序游戏 (40 分)相关推荐

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

    掌握类的继承.多态性使用方法以及接口的应用. 输入格式: 首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片.各数字之间以一个或多个空格 ...

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

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

  3. 网络教育计算机统考40分单选,2021年6月网络教育统考《计算机应用基础》统考必过题库最全试题及答案...

    <2021年6月网络教育统考<计算机应用基础>统考必过题库最全试题及答案>由会员分享,可在线阅读,更多相关<2021年6月网络教育统考<计算机应用基础>统考必 ...

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

    ** 7-5 图形继承与多态 (50 分) ** 掌握类的继承.多态性及其使用方法.具体需求参见作业指导书. 2021-OO第06次作业-5指导书V1.0.pdf 解题报告 1.深入理解继承与多态的原 ...

  5. 7-13 大家一起来玩游戏 (20 分)

    7-13 大家一起来玩游戏 (20 分) 24点是一种益智游戏,24点是把4个整数(一般是正整数)通过加减乘除以及括号运算,使最后的计算结果是24的一个数学游戏,24点可以考验人的智力和数学敏感性,它 ...

  6. HTML5 Canvas核心技术:图形.动画与游戏开发

    <HTML5 Canvas核心技术:图形.动画与游戏开发> 基本信息 原书名:Core HTML5 Canvas: Graphics, Animation, and Game Develo ...

  7. Day10:图形用户界面和游戏开发

    文章目录 图形用户界面和游戏开发 基于tkinter模块的GUI 使用Pygame进行游戏开发 制作游戏窗口 在窗口中绘图 加载图像 实现动画效果 碰撞检测 事件处理 图形用户界面和游戏开发 基于tk ...

  8. Python开发系列课程(12) - 图形用户界面和游戏开发

    图形用户界面和游戏开发 基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述.Python默认的GUI开发模块是tkint ...

  9. 小学《教育教学知识与能力》教学设计万能模板 稳拿40分

    在小学教育教学知识与能力的考试中,教学设计会考一个题目,占40分.可以看看以往真题是怎么出教学设计题的.点击链接加入群聊[教师资格证学习群]:https://jq.qq.com/?_wv=1027&a ...

最新文章

  1. 计算机房英语视频,雅思听力场景词汇:计算机房场景
  2. 云炬WEB开发笔记2-5 chrome调试工具
  3. 【C/C++多线程编程之九】pthread读写锁
  4. 20201028 《计算感知》第4节课 笔记
  5. 惠普:存储为未来而设计
  6. Hive 数据质量检测
  7. 编程求一个四位自然数ABCD,它乘以A后变成DCBA
  8. uniappd的web-view组件无法动态加载本地html文件的解决办法
  9. 使用Java将图片转成Base64编码,并压缩至40k
  10. 报错 Tensorflow 2.0 Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
  11. linux 内核---------董昊 ( Robin Dong ) and OenHan
  12. python爬取百度首页源代码并存储到HTML文件里
  13. 一枚钻戒如何成功借势世界杯,与粉丝秀恩爱
  14. 如何用windows系统自带的截图工具截图
  15. 识别图中文字python_python识别图片中文字的方法
  16. 23web app实现上下左右滑动
  17. Database Clinic: MongoDB 数据库诊所:MongoDB Lynda课程中文字幕
  18. Matlab中自带地图绘制WorldMap详解
  19. 【第8讲】铁氧体磁芯
  20. html5 css透明效果,css中实现背景透明的三种方式

热门文章

  1. 软考高级网络规划设计师论文考试技巧
  2. Android深入探究笔记--手势识别
  3. For in + 定时器
  4. subprocss模块
  5. 实验三:跟踪分析Linux内核启动过程
  6. CentOS yum的详细使用方法
  7. 01python初识—编辑器版本变量知识
  8. ASP.NET MVC 4应用程序文件夹
  9. 使用 Jquery 来实现可以输入值的下拉选单 雏型
  10. Jlink-v8 灯不亮重新烧写固件的办法