本文共 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/