编程题

(1)设计一个名为Geometric的几何图形的抽象类,该类包括:

①两个名为color、filled属性分别表示图形颜色和是否填充。

②一个无参的构造方法。

③一个能创建指定颜色和填充值的构造方法。

④一个名为getArea()的抽象方法,返回图形的面积。

⑤一个名为getPerimeter()的抽象方法,返回图形的周长。

⑥一个名为toString()的方法,返回该几何图形的字符串描述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public abstract class Geometric {
    private String color;// 图形颜色
    boolean filled;// 是否填充
 
    public Geometric() {// 无参的构造方法
 
    }
 
    public Geometric(String color, boolean filled) {// 一个能创建指定颜色和填充值的构造方法。
        this.color = color;
        this.filled = filled;
 
    }
 
    abstract double getArea();// 一个名为getArea()的抽象方法,返回图形的面积。
 
    abstract double getPerimeter();// 一个名为getPerimeter()的抽象方法,返回图形的周长。
 
    @Override
    public String toString() {// 一个名为toString()的方法,返回该几何图形的字符串描述。
        return "Geometric [color=" + color + ", filled=" + filled + ", getArea()=" + getArea() + ", getPerimeter()="
                + getPerimeter() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="
                + super.toString() + "]";
    }
 
}

  

(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:

①一个名为radius的double类型私有属性表示半径。

②一个无参构造方法创建圆。

③一个能创建指定radius的圆的构造方法。

④radius的访问器方法。

⑤一个名为getArea()的方法,返回该圆的面积。

⑥一个名为getPerimeter()的方法,返回圆的周长。

⑦一个名为toString()的方法,返回该圆的字符串描述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.Scanner;
 
public class Circle extends Geometric {// 设计一个名为Circle的圆类来实现Geometric类
    private double radius;// 一个名为radius的double类型私有属性表示半径。
 
    public Circle() {// 一个无参构造方法创建圆。
 
    }
 
    public Circle(double radius) {// 一个能创建指定radius的圆的构造方法。
        this.radius = radius;
    }
 
    public double getRadius() {// radius的get访问器方法。
        return radius;
    }
 
    public void setRadius(double radius) {// radius的set访问器方法。
        this.radius = radius;
    }
 
    @Override
    double getArea() {// 一个名为getArea()的方法,返回该圆的面积
        Scanner cc = new Scanner(System.in);
        System.out.println("请输入圆的半径,求面积:");
        double c = cc.nextDouble();
        double S;
        S = 3.14 * c * c;
        System.out.println("半径为" + c + "的圆的面积为:" + S);
        return S;
    }
 
    @Override
    double getPerimeter() {// 一个名为getPerimeter()的方法,返回圆的周长。
        Scanner cc = new Scanner(System.in);
        System.out.println("请输入圆的半径,求周长:");
        double c = cc.nextDouble();
        double C;
        C = 2 * 3.14 * c;
        System.out.println("半径为" + c + "的圆的周长为:" + C);
        return C;
    }
 
    @Override
    public String toString() {// 一个名为toString()的方法,返回该圆的字符串描述。
        return "Circle [radius=" + radius + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + "]";
    }
 
}

  

(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:

①两个名为side1、side2的double类型私有属性表示矩形的两条边。

②一个无参构造方法创建矩形。

③一个能创建指定sidel和side2的矩形的构造方法。

④side1和side2的访问器方法。

⑤一个名为getArea()的方法,返回该矩形的面积。

⑥一个名为gelPerimeter()的方法,返回该矩形的周长。

⑦一个名为toString()的方法,返回该矩形的字符串描述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.util.Scanner;
 
public class Rectangle extends Geometric {// 设计一个名为Rectangle的矩形类来实现Geometric类
    public double side1;
    public double side2;
 
    public void Readable() {
 
    }
 
    public double getSide1() {// side1的访问器方法。
        return side1;
    }
 
    public double getSide2() {// side的访问器方法。
        return side2;
    }
 
    public Rectangle(double side1, double side2) {
        this.side1 = side1;
        this.side2 = side2;
    }
 
    @Override
    double getArea() {
        Scanner cc = new Scanner(System.in);
        System.out.println("请输入长和宽,求矩形的面积");
        double s1 = cc.nextDouble();
        double s2 = cc.nextDouble();
        double S = s1 * s2;
        System.out.println("边长为" + s1 + "和" + s2 + "的矩形的面积为:" + S);
        return S;
    }
 
    @Override
    double getPerimeter() {
        System.out.println("请输入矩形的长和宽,求周长");
        Scanner cc = new Scanner(System.in);
        double s1 = cc.nextDouble();
        double s2 = cc.nextDouble();
        double C = (s1 + s2) * 2;
        System.out.println("边长为" + s1 + "和" + s2 + "的矩形的周长为:" + C);
        return C;
    }
 
    @Override
    public String toString() {
        return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", filled=" + filled + ", getArea()=" + getArea()
                + ", gelPerimeter()=" + getPerimeter() + ", getPerimeter()=" + getPerimeter() + ", toString()="
                + super.toString() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + "]";
    }
 
}

  

(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:

①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。

②一个无参构造方法创建三角形。

③一个能创建指定side1,side2和side3的矩形的构造方法。

④side1,side2和side3的访问器方法。

⑤一个名为getArea()的方法,返回该三角形的面积。

⑥一个名为getPerimeter()的方法,返回该三角形的周长。

⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。

⑧一个名为toString()的方法,返回三边较小的字符串描述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.util.Scanner;
 
public class Triangle extends Geometric {
    public double side1;
    public double side2;
    public double side3;
 
    public Triangle() {
 
    }
 
    public double getSide1() {// side1的访问器方法。
        return side1;
    }
 
    public double getSide2() {// side2的访问器方法。
        return side2;
    }
 
    public double getSide3() {// side3的访问器方法。
        return side3;
    }
 
    public Triangle(double side1, double side2, double side3) {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }
 
    @Override
    double getArea() {
        Scanner tt = new Scanner(System.in);
        System.out.println("请输入三角形的三条边长,求面积:");
        double t1 = tt.nextDouble();
        double t2 = tt.nextDouble();
        double t3 = tt.nextDouble();
        double S;
        double s;
        double p;
        p = (t1 + t2 + t3) / 2;
        s = p * (p - t1) * (p - t2) * (p - t3);
        S = Math.sqrt(s);
        System.out.println("边长为" + t1 + "和" + t2 + "和" + t3 + "的三角形的面积为:" + S);
        return S;
 
    }
 
    @Override
    double getPerimeter() {
        Scanner tt = new Scanner(System.in);
        System.out.println("请输入三角形的三条边长,求周长:");
        double t1 = tt.nextDouble();
        double t2 = tt.nextDouble();
        double t3 = tt.nextDouble();
        double C;
        C = t1 + t2 + t3;
        System.out.println("边长为" + t1 + "和" + t2 + "和" + t3 + "的三角形的周长为:" + C);
        return C;
 
    }
 
    public void isTriangle() {
        Scanner sr = new Scanner(System.in);
        System.out.println("请输入三个边长,判断能否构成三角形");
        double b1 = sr.nextDouble();
        double b2 = sr.nextDouble();
        double b3 = sr.nextDouble();
        if (b1 + b2 > b3 && b1 + b3 > b2 && b2 + b3 > b1) {
            System.out.println("能构成三角形");
        } else {
            System.out.println("不能构成三角形");
        }
    }
 
    public String toString() {
        Scanner sr = new Scanner(System.in);
        System.out.println("请输入三个边长,求最小边");
        double b1 = sr.nextDouble();
        double b2 = sr.nextDouble();
        double b3 = sr.nextDouble();
        double min = b1;
        if (b1 < b2) {
            if (b1 < b3) {
                min = b1;
            } else {
                min = b3;
            }
        } else if (b2 < b1) {
            if (b2 < b3) {
                min = b2;
            } else {
                min = b3;
            }
        }
        System.out.println("三边最小的是:" + min);
        return "三边最小的是:" + min;
    }
 
}

  

(5)编写测试类,测试图形的面积和周长。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Test {
 
    public static void main(String[] args) {
        System.out.println("--------圆形--------");
        Circle c = new Circle();
        c.getArea();
        c.getPerimeter();
 
        System.out.println("--------矩形--------");
        Rectangle r = new Rectangle(1, 2);
        r.getArea();
        r.getPerimeter();
        System.out.println("--------三角形--------");
        Triangle t = new Triangle();
        t.getArea();
        t.getPerimeter();
        t.isTriangle();
        t.toString();
    }
 
}