用JAVA代码利用坐标构造三角形、椭圆、线段线并求其周长、面积

  • 主测试程序
  • ShapeCreator类
  • Shape类
  • Oval类
  • line类
  • Rectangle类
  • Triangle类

本程序主要靠编写Shape类、矩形类、三角形类、线段类与图形构造类,共同实现求上述图形的面积、周长。其中涉及到字符数组与整数数组的转换,字符数组与坐标数组的转换

主测试程序

import java.awt.*;
import java.util.Scanner;
public class ShapeTest {public static void main(String[] args) {//        输入图形种类System.out.println("Please enter the graphic which you need to calculate:");System.out.println("Line(0)/Triangle(1)/Rectangle(2)/Oval(3)");
//        捕捉异常try(Scanner sc=new Scanner(System.in);){String tmp=sc.nextLine();
//            定义kind为输入图形种类,Integer.parseInt()为解析方法,将输入的字符串解析为Int型int kind=Integer.parseInt(tmp);
//            输入坐标System.out.println("Please enter the point(divided by space):");tmp=sc.nextLine();
//            split(a)方法为分割方法,将被a(这个a可能为空格,也可能为,或别的)分隔的内容分隔为几个独立的字符串集String[] sp= tmp.split(" ");
//            定义坐标点数组Point[] PtArray=new Point[sp.length];
//            for语句分别将坐标点输入到PtArray[]中for (int i = 0;i < sp.length ;i ++) {String[] points = sp[i].split(",");Point point = new Point(Integer.parseInt(points[0]),Integer.parseInt(points[1]));PtArray[i] = point;}
//            定义Shane型对象,调用ShapeCreator中的createShape方法Shape shp= ShapeCreator.createShape(kind,PtArray);System.out.println("The graphic is:"+shp.getName());System.out.println("Area of the graphic is:"+shp.area());System.out.println("Perimeter of teh graphic is:"+shp.perimeter());}}
}

ShapeCreator类

import java.awt.*;public class ShapeCreator {public static Shape createShape(int clsNo, Point[] ptArray){Shape shp = null;switch (clsNo){case 0:shp=new Line(ptArray);break;case 1:shp=new Triangle(ptArray);break;case 2:shp=new Rectangle(ptArray);break;case 3:shp=new Oval(ptArray);break;default:shp=Shape.NULL;break;}return shp;}
}

Shape类

//定义Shape类
import java.awt.*;
public abstract class Shape {//    构造方法public static Shape NULL = new Shape(){{name = "NULL";vertexArray = new Point[0];}public double area(){return  0;}public double perimeter(){return 0;}};protected String name;protected Point[] vertexArray;public abstract double area();public abstract double perimeter();public String getName(){return name;}}

Oval类


import java.awt.*;public  class Oval extends Shape{//输入两坐标为以椭圆外接矩形对角线上两端点String name="椭圆";
// 判定是否可以构成椭圆public Oval(Point[] PtArray) {this.vertexArray=PtArray;if((vertexArray[0].x==vertexArray[1].x)||(vertexArray[0].y==vertexArray[1].y)){System.out.println("格式错误!以下结果无效");}}
//求椭圆面积@Overridepublic double area() {return Math.PI*Math.abs(vertexArray[0].x-vertexArray[1].x)*Math.abs(vertexArray[0].y-vertexArray[1].y)*0.25;}
//求椭圆周长@Overridepublic double perimeter() {double L ;double b = Math.abs(vertexArray[0].x-vertexArray[1].x);double a = Math.abs(vertexArray[0].x-vertexArray[1].x);if (a>=b) {L = 2 * Math.PI * b + 4 * (a + b);}else{L = 2 * Math.PI * a + 4 * (a + b);}return L;}
//    返回椭圆名字@Overridepublic String getName() {return name;}
}

line类

import java.awt.*;public class Line extends Shape{String name="直线";public Line(Point[] PtArray) {this.vertexArray=PtArray;if((vertexArray[0].x==vertexArray[1].x)&&(vertexArray[0].y==vertexArray[1].y)){System.out.println("格式错误!以下结果无效");}}@Overridepublic double area() {return 0;}@Overridepublic double perimeter() {return Math.abs(Math.sqrt(Math.pow((vertexArray[1].x-vertexArray[0].x),2)+Math.pow((vertexArray[1].y-vertexArray[0].y),2)));}@Overridepublic String getName() {return name;}
}

Rectangle类

import java.awt.*;public class Rectangle extends Shape {String name="矩形";public Rectangle(Point[] PtArray) {this.vertexArray=PtArray;if((vertexArray[0].x==vertexArray[1].x)||vertexArray[0].y==vertexArray[1].y){System.out.println("格式错误!以下结果无效");}}
//求矩形面积@Overridepublic double area() {return (Math.abs(vertexArray[0].x-vertexArray[1].x))*Math.abs((vertexArray[0].y-vertexArray[1].y));}
//求矩形周长@Overridepublic double perimeter() {return 2*(Math.abs(vertexArray[0].x-vertexArray[1].x)+Math.abs(vertexArray[0].y-vertexArray[1].y));}@Overridepublic String getName() {return name;}
}

Triangle类

import java.awt.*;public class Triangle extends Shape {String name="三角形";
//构造函数public Triangle(Point[] PtArray) {this.vertexArray=PtArray;//判定三角形三边是否满足三角形定义,abc分别为三边
//        Math.pow(a,b)返回a的b次方
//        Math.sqrt(a)返回a的算术平方根double a = Math.sqrt(Math.pow((vertexArray[0].x-vertexArray[1].x),2)+Math.pow((vertexArray[0].y-vertexArray[1].y),2));double b = Math.sqrt(Math.pow((vertexArray[0].x-vertexArray[2].x),2)+Math.pow((vertexArray[0].y-vertexArray[2].y),2));double c = Math.sqrt(Math.pow((vertexArray[1].x-vertexArray[2].x),2)+Math.pow((vertexArray[1].y-vertexArray[2].y),2));if ((a +b <c)||(a+c<b)||(b+c<a)){System.out.println("格式错误!,以下结果无效");}}
//求三角形面积@Overridepublic double area() {return 0.5*Math.abs((vertexArray[0].x*vertexArray[1].y)-(vertexArray[0].x*vertexArray[2].y)+(vertexArray[1].x*vertexArray[2].y)-(vertexArray[1].x*vertexArray[0].y)+(vertexArray[2].x*vertexArray[0].y)-(vertexArray[2].x*vertexArray[1].y));}
//求三角形周长@Overridepublic double perimeter() {return Math.sqrt(Math.pow((vertexArray[1].x-vertexArray[0].x),2)+Math.pow((vertexArray[1].y-vertexArray[0].y),2))+Math.sqrt(Math.pow((vertexArray[2].x-vertexArray[1].x),2)+Math.pow((vertexArray[2].y-vertexArray[1].y),2))+Math.sqrt(Math.pow((vertexArray[2].x-vertexArray[0].x),2)+Math.pow((vertexArray[2].y-vertexArray[0].y),2));}
//返回名称:三角形@Overridepublic String getName() {return name;}
}

用JAVA代码利用坐标构造三角形、椭圆、直线并求其周长、面积相关推荐

  1. jsp里加java代码,利用静态内部类为您的代码添加辅助功能-JSP教程,Java技巧及代码...

    利用静态内部类为您的代码添加辅助功能 作者 john d. mitchell 摘要这个技巧提供了一个实例,它可以利用静态内部类为您的类添加独立的.可选的辅助功能,例如测试和示例代码等.( 500 字) ...

  2. Java代码利用朴素贝叶斯分类算法实现信息分类

    贝叶斯分类算法 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法 ...

  3. 抓阄java代码,利用python如何实现团队成员动态抓阄?

    解决思路: 1 确定团队成员个数num,然后根据成员个数生成元素非重复的数组: 2 构成一个团队成员字典,键:成员名  值:0, 然后将生成的数组分别赋值给字典键对应的值: 话不多说,看代码便知: # ...

  4. oracle两表同步java代码,利用DBLink+JOB实现两个Oracle数据库之间的数据同步

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第三步:建立JOB任务,定时同步数据在PL/SQL的command window输入以下语句: begin sys.dbms_job.submit(job ...

  5. Java画图(直线,矩形,椭圆),并显示其周长面积

    Shape类 父类 package com.lovoinfo.shape;import java.awt.Color; import java.awt.Graphics; /*** 图形(抽象类,不能 ...

  6. java求几何周长面积_JAVA:编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序...

    展开全部 你这32313133353236313431303231363533e4b893e5b19e31333365653837题比较简单,真想不出怎么还会涉及到内部类,抽象类的话计算方法没有共性, ...

  7. java求几何周长面积_java求几何图形面积

    展开全部 代码如下:abstract class Geometry { abstract double getArea(); } // 三角形 class Triangle extends Geome ...

  8. java求几何周长面积_Java——求图形面积和周长

    设计接口图形Shape.及其实现类Circle和Rectangle.工具类Show中提供两个方法showArea和showPerimeter,分别用于显示图形的周长和面积.App类中main方法中给出 ...

  9. java求几何周长面积_Java如何计算几何图形的面积

    Java如何计算几何图形的面积?圆形矩形面积的计算方式.Java使用抽象方法来计算计算几何图形的面积.每个图形都有一些共同的属性,比如是名字.面积等,但是图形的计算方式却是不同的.现在就定义一个超类来 ...

最新文章

  1. 新智能时代颠覆情报的未来
  2. 求一个简单的java线程代码,Java线程代码的实现方法
  3. 求幂运算、多项式乘法及Horner法则的应用
  4. tomcat通过apr配置https
  5. 计算机在音乐教学的应用论文开题报告,音乐教育论文开题报告(范文详解)
  6. Linux SWAP 交换分区
  7. Specified VM install not found: type Standard VM, name jdk1.7
  8. [MyBatisPlus]测试BaseMapper的功能测试自定义功能
  9. 一个没有经验的前端工程师,写CSS的时候有什么常见通病?
  10. Abbott's Revenge UVA - 816 (输出bfs路径)
  11. Wireshark 检索命令
  12. fatal error: stropts.h: 没有那个文件或目录
  13. Jupyter notebook、JypterLab的本地安装与使用
  14. keil uvision4 注册机 使用方法
  15. 【黑马程序员数据库】数据库基础大总结
  16. k近邻法 kd树 平衡kd树
  17. word页码怎么从指定页开始设置?
  18. oracle幂函数运算公式,幂函数公式_幂的运算法则公式14个
  19. android studio代码教程,史上最详细的Android Studio系列教程三
  20. 关于erp系统最小采购量

热门文章

  1. 中国作者论文写作中的常见句法错误(上)
  2. 相等(==)与 全等(===)
  3. 计算机管理员没设密码忘了怎么办,没有电脑路由器密码忘记了怎么办?
  4. RG120A-BB破解说明
  5. java9新特性(简述十大新特性)
  6. 软件工程专业就业前景如何 这个几个误区要了解
  7. python中两个除号连用是什么意思啊_【人人都是Pythoner】——python3中“变革”了的除号...
  8. Google AIY | Vision Kit开箱深入试用
  9. 史上最全openstack-T版安装,学不会你打我
  10. 晶闸管-电动机直流不可逆调速系统电路原理总图