用JAVA代码利用坐标构造三角形、椭圆、直线并求其周长、面积
用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代码利用坐标构造三角形、椭圆、直线并求其周长、面积相关推荐
- jsp里加java代码,利用静态内部类为您的代码添加辅助功能-JSP教程,Java技巧及代码...
利用静态内部类为您的代码添加辅助功能 作者 john d. mitchell 摘要这个技巧提供了一个实例,它可以利用静态内部类为您的类添加独立的.可选的辅助功能,例如测试和示例代码等.( 500 字) ...
- Java代码利用朴素贝叶斯分类算法实现信息分类
贝叶斯分类算法 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法 ...
- 抓阄java代码,利用python如何实现团队成员动态抓阄?
解决思路: 1 确定团队成员个数num,然后根据成员个数生成元素非重复的数组: 2 构成一个团队成员字典,键:成员名 值:0, 然后将生成的数组分别赋值给字典键对应的值: 话不多说,看代码便知: # ...
- oracle两表同步java代码,利用DBLink+JOB实现两个Oracle数据库之间的数据同步
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第三步:建立JOB任务,定时同步数据在PL/SQL的command window输入以下语句: begin sys.dbms_job.submit(job ...
- Java画图(直线,矩形,椭圆),并显示其周长面积
Shape类 父类 package com.lovoinfo.shape;import java.awt.Color; import java.awt.Graphics; /*** 图形(抽象类,不能 ...
- java求几何周长面积_JAVA:编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序...
展开全部 你这32313133353236313431303231363533e4b893e5b19e31333365653837题比较简单,真想不出怎么还会涉及到内部类,抽象类的话计算方法没有共性, ...
- java求几何周长面积_java求几何图形面积
展开全部 代码如下:abstract class Geometry { abstract double getArea(); } // 三角形 class Triangle extends Geome ...
- java求几何周长面积_Java——求图形面积和周长
设计接口图形Shape.及其实现类Circle和Rectangle.工具类Show中提供两个方法showArea和showPerimeter,分别用于显示图形的周长和面积.App类中main方法中给出 ...
- java求几何周长面积_Java如何计算几何图形的面积
Java如何计算几何图形的面积?圆形矩形面积的计算方式.Java使用抽象方法来计算计算几何图形的面积.每个图形都有一些共同的属性,比如是名字.面积等,但是图形的计算方式却是不同的.现在就定义一个超类来 ...
最新文章
- 新智能时代颠覆情报的未来
- 求一个简单的java线程代码,Java线程代码的实现方法
- 求幂运算、多项式乘法及Horner法则的应用
- tomcat通过apr配置https
- 计算机在音乐教学的应用论文开题报告,音乐教育论文开题报告(范文详解)
- Linux SWAP 交换分区
- Specified VM install not found: type Standard VM, name jdk1.7
- [MyBatisPlus]测试BaseMapper的功能测试自定义功能
- 一个没有经验的前端工程师,写CSS的时候有什么常见通病?
- Abbott's Revenge UVA - 816 (输出bfs路径)
- Wireshark 检索命令
- fatal error: stropts.h: 没有那个文件或目录
- Jupyter notebook、JypterLab的本地安装与使用
- keil uvision4 注册机 使用方法
- 【黑马程序员数据库】数据库基础大总结
- k近邻法 kd树 平衡kd树
- word页码怎么从指定页开始设置?
- oracle幂函数运算公式,幂函数公式_幂的运算法则公式14个
- android studio代码教程,史上最详细的Android Studio系列教程三
- 关于erp系统最小采购量
热门文章
- 中国作者论文写作中的常见句法错误(上)
- 相等(==)与 全等(===)
- 计算机管理员没设密码忘了怎么办,没有电脑路由器密码忘记了怎么办?
- RG120A-BB破解说明
- java9新特性(简述十大新特性)
- 软件工程专业就业前景如何 这个几个误区要了解
- python中两个除号连用是什么意思啊_【人人都是Pythoner】——python3中“变革”了的除号...
- Google AIY | Vision Kit开箱深入试用
- 史上最全openstack-T版安装,学不会你打我
- 晶闸管-电动机直流不可逆调速系统电路原理总图