编程题
(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(); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现