7-2 图形继承与多态 (30分)

掌握类的继承、多态性及其使用方法。具体需求参见作业指导书。 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<Double>{
     
	@Override
	public int compare(Double o1, Double o2) {
     
		if(o1>o2) {
     
			return 1;
		}else if(o1<o2) {
     
			return -1;
		}else
			return 0;
	}
}
class Circle{
     
	double 半径;
	public boolean 是否合法() {
     
		if(this.半径>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 <Double> 面积表=new ArrayList<Double>();
			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> 面积表){
     
		double a = 0;
		for (double i:面积表) {
     
			a=a+i;
		}
		return a;
	}
	public static void 输出所有面积(ArrayList <Double> 面积表) {
     
		for (double i:面积表) {
     
			System.out.printf("%.2f ",i);
		}
		System.out.println();
	}
}

你可能感兴趣的:(7-2 图形继承与多态 (30分))