博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7-2 图形继承与多态 (30分)
阅读量:4035 次
发布时间:2019-05-24

本文共 3655 字,大约阅读时间需要 12 分钟。

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

输入格式:

从键盘首先输入三个整型值(例如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.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.Scanner;class gongjv implements Comparator
{
@Override public int compare(Double o1, Double o2) {
if(o1>o2) {
return 1; }else if(o1
0) {
return true; }else {
return false; } } public Circle(double 半径) {
super(); this.半径 = 半径; } public double 求面积(){
return Math.PI*半径*半径; }}class Rectangle{
double 长,宽; public boolean 是否合法() {
if(this.宽>0&this.长>0) {
return true; }else {
return false; } } public Rectangle(double 长, double 宽) {
super(); this.长 = 长; this.宽 = 宽; } public double 求面积(){
return 宽*长; }}class Triangle{
double a,b,c; public Triangle(double a, double b, double c) {
super(); this.a = a; this.b = b; this.c = c; } public double 求面积(){
return Math.sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4; } public boolean 是否符合三边关系() {
double a[] = new double[3]; a[0] = this.a; a[1] = this.b; a[2] = this.c; Arrays.sort(a); if (a[0] + a[1] > a[2]) {
return true; } else {
return false; } }}public class Main {
public static void main(String[] args) {
Scanner se = new Scanner(System.in); int 圆形个数 = se.nextInt(); int 矩形个数 = se.nextInt(); int 三角形个数 = se.nextInt(); if (圆形个数 >= 0 & 矩形个数 >= 0 & 三角形个数 >= 0) {
Circle c[] = new Circle[圆形个数]; Rectangle r[] = new Rectangle[矩形个数]; Triangle t[] = new Triangle[三角形个数]; ArrayList
面积表=new ArrayList
(); for (int i = 0; i < 圆形个数; i++) {
c[i] = new Circle(se.nextDouble()); if (c[i].是否合法() == false) {
System.out.println("Wrong Format"); System.exit(0); } 面积表.add(c[i].求面积()); } for (int i = 0; i < 矩形个数; i++) {
r[i] = new Rectangle(se.nextDouble(), se.nextDouble()); if (r[i].是否合法() == false) {
System.out.println("Wrong Format"); System.exit(0); } 面积表.add(r[i].求面积()); } for (int i = 0; i < 三角形个数; i++) {
t[i] = new Triangle(se.nextDouble(), se.nextDouble(), se.nextDouble()); if (t[i].是否符合三边关系() == false) {
System.out.println("Wrong Format"); System.exit(0); } 面积表.add(t[i].求面积()); } System.out.println("Original area:"); 输出所有面积(面积表); System.out.printf("Sum of area:%.2f\n",求所有面积(面积表)); Collections.sort(面积表, new gongjv()); System.out.println("Sorted area:"); for(double i:面积表) {
System.out.printf("%.2f ",i); } System.out.println(); System.out.printf("Sum of area:%.2f\n",求所有面积(面积表)); } else {
System.out.println("Wrong Format"); } } public static double 求所有面积(ArrayList
面积表){
double a = 0; for (double i:面积表) {
a=a+i; } return a; } public static void 输出所有面积(ArrayList
面积表) { for (double i:面积表) { System.out.printf("%.2f ",i); } System.out.println(); }}

转载地址:http://nhbdi.baihongyu.com/

你可能感兴趣的文章
python append 与浅拷贝
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
python自动化工具之pywinauto(零)
查看>>
python一句话之利用文件对话框获取文件路径
查看>>
PaperDownloader——文献命名6起来
查看>>
PaperDownloader 1.5.1——更加人性化的文献下载命名解决方案
查看>>
如何将PaperDownloader下载的文献存放到任意位置
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
漂亮的代码,糟糕的行为——解决Java运行时的内存问题
查看>>
Java的对象驻留
查看>>
logback高级特性使用(二) 自定义Pattern模板
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
可扩展、高可用服务网络设计方案
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>