java代码shape java代码删除本地文件

java如何编程定义一个shape抽象类,具有求面积、求周长、显示输出功能?

楼主是不是想利用Java求shape文件中 面的面积,也就是polygon或者multipolygon的面积。实际上就是不规则多边形的面积,如果不用什么函数库(geotools)的话,还是有现成的公式的,非是通过定积分推倒了一个公式而已。\x0d\x0a需要注意的是:\x0d\x0a点要按照逆时针或者顺时针的顺序添加进list\x0d\x0apackage geodemo;\x0d\x0aimport java.awt.Point;\x0d\x0aimport java.util.ArrayList;\x0d\x0aimport java.util.List;\x0d\x0aimport org.opengis.feature.simple.SimpleFeature;\x0d\x0aimport com.vividsolutions.jts.geom.Geometry;\x0d\x0apublic class GetArea{\x0d\x0apublic static void main(String args[]){\x0d\x0aPoint p1 = new Point(1,0);\x0d\x0aPoint p2 = new Point(12,0);\x0d\x0aPoint p3 = new Point(10,10);\x0d\x0aPoint p4 = new Point(0,10);\x0d\x0aPoint p5= new Point(3,3);\x0d\x0aList list = new ArrayList();//泛型\x0d\x0alist.add(p1);\x0d\x0alist.add(p2);\x0d\x0alist.add(p3);\x0d\x0alist.add(p4);\x0d\x0alist.add(p5);\x0d\x0aGetArea t = new GetArea();\x0d\x0adouble area = t.getArea(list);\x0d\x0aSystem.out.println(area);\x0d\x0a}\x0d\x0apublic double getArea(List list)\x0d\x0a{\x0d\x0a//S = 0.5 * ( (x0*y1-x1*y0) + (x1*y2-x2*y1) + ... + (xn*y0-x0*yn) )\x0d\x0adouble area = 0.00;\x0d\x0afor(int i = 0;i

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、雅安服务器托管、营销软件、网站建设、塔什库尔干塔吉克网站维护、网站推广。

回答于 2022-11-16

java编写图形抽象类(Shape)

我来写一下吧:

abstract class Shape{

private double c;

private double s;

public abstract void girth();

public abstract void area();

public void setGirth(double c){

this.c = c;

}

public void setArea(double s){

this.s = s;

}

public double getGirth(){

return c;

}

public double getArea(){

return s;

}

public void outInfo(){}

}

class Circle extends Shape{

private static final double PI = 3.1415926;

private double r;

//定义一个构造函数

public Circle(double r){

this.r = r;

}

//重写抽象方法

public void girth() {

double a =2*PI*r;

super.setGirth(a);

}

public void area() {

double b =PI*r*r;

super.setArea(b);

}

public void outInfo() {

this.girth();

this.area();

System.out.println("所求圆形周长为:"+super.getGirth());

System.out.println("所求圆形面积为:"+super.getArea());

}

}

class Rectangle extends Shape{

private double height;

private double width;

//定义一个构造函数

public Rectangle(double height,double width){

this.height = height;

this.width = width;

}

//重写抽象方法

public void girth() {

double a =2*(height+width);

super.setGirth(a);

}

public void area() {

double b =(height*width);

super.setArea(b);

}

public void outInfo() {

this.girth();

this.area();

System.out.println("所求矩形周长为:"+super.getGirth());

System.out.println("所求矩形面积为:"+super.getArea());

}

}

class Triangle extends Shape{

private double lengthA;

private double lengthB;

private double lengthC;

//定义一个构造函数

public Triangle(double lengthA,double lengthB,double lengthC){

this.lengthA = lengthA;

this.lengthB = lengthB;

this.lengthC = lengthC;

}

//重写抽象方法

public void girth() {

double a =(lengthA+lengthB+lengthC);

super.setGirth(a);

}

public void area() {

if((lengthA+lengthB lengthC) || (lengthA + lengthC lengthB) || (lengthB+lengthC lengthA)) {

System.out.println("两边之和必须大于第三个边");

System.exit(0);

}

double p = (lengthA+lengthB+lengthC)/2;

double b = Math.sqrt(p*(p-lengthA)*(p-lengthB)*(p-lengthC));

super.setArea(b);

}

public void outInfo() {

this.girth();

this.area();

System.out.println("所求三角形周长为:"+super.getGirth());

System.out.println("所求三角形面积为:"+super.getArea());

}

}

public class ShapeTest {

public static void main (String [] args){

Shape circle = new Circle(3.0);

Shape rectangle = new Rectangle(8.0,7.0);

Shape triangle = new Triangle(3.0,4.0,5.0);

circle.outInfo();

rectangle.outInfo();

triangle.outInfo();

}

}

java编程定义一个shape抽象类,具有求面积/求周长/显示输出功能.

楼主是不是想利用Java求shape文件中 面的面积,也就是polygon或者multipolygon的面积。实际上就是不规则多边形的面积,如果不用什么函数库(geotools)的话,还是有现成的公式的,非是通过定积分推倒了一个公式而已。

需要注意的是:

点要按照逆时针或者顺时针的顺序添加进list

package geodemo;

import java.awt.Point;

import java.util.ArrayList;

import java.util.List;

import org.opengis.feature.simple.SimpleFeature;

import com.vividsolutions.jts.geom.Geometry;

public class GetArea{

public static void main(String args[]){

Point p1 = new Point(1,0);

Point p2 = new Point(12,0);

Point p3 = new Point(10,10);

Point p4 = new Point(0,10);

Point p5= new Point(3,3);

ListPoint list = new ArrayListPoint();//泛型

list.add(p1);

list.add(p2);

list.add(p3);

list.add(p4);

list.add(p5);

GetArea t = new GetArea();

double area = t.getArea(list);

System.out.println(area);

}

public double getArea(ListPoint list)

{

//S = 0.5 * ( (x0*y1-x1*y0) + (x1*y2-x2*y1) + ... + (xn*y0-x0*yn) )

double area = 0.00;

for(int i = 0;ilist.size();i++){

if(ilist.size()-1){

Point p1 = list.get(i);//得到p1坐标对(x,y)

Point p2 = list.get(i+1); //得到p2坐标对(x,y)

area += p1.getX()*p2.getY() - p2.getX()*p1.getY();

}else{

Point pn = list.get(i);

Point p0 = list.get(0);

area += pn.getX()*p0.getY()- p0.getX()*pn.getY();

}

}

area = area/2.00;

return area;

}

}

原理如下:shapefile文件面文件也是由一个个坐标点构成的,无论是不规则凸多边形还凹多边形,都可以分成多个三角形,然后就是按一定顺序求解三角形面积了。我把网上的一个例子修改了下,加上了泛型(广泛的类型,类似int,double),点是五个,你可以在此基础上修改,读取shp文件,把坐标提取出来,然后再计算。

至于求周长之类的就是把公式变成代码的过程,本人强烈建议还是用arcgis求面积比较好,

java中shape这个类是怎么用的?

注意:我已经将一个画图的程序代码发到你的QQ邮箱了,你可以参考下它的方法.

shape 在java.awt包中是一个接口,

所有已知实现类:

Arc2D, Arc2D.Double, Arc2D.Float, Area, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float, DefaultCaret, Ellipse2D, Ellipse2D.Double, Ellipse2D.Float, GeneralPath, Line2D, Line2D.Double, Line2D.Float, Polygon, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle2D, Rectangle2D.Double, Rectangle2D.Float, RectangularShape, RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float

一个接口是不能实例化的。你是不是想保存上面这些已实现了的类对象?

保存一个图,有多种方法。在此我可以给你一种思路:你可以获得每一个对象图的点,边长,高等属性,然后将这些信息保存起来,在下次打开的时候,重新将这些图画一次,就能显示了原图了。

哈哈,这只是一种方法的。你可以想想还有没有别的方法。在Shape是没有方法提供保存功能的。你可以自己想个办法如何实现保存。或是请教你的老师。

祝你成功!

JAVA程序编写。 定义一个抽象类shape ,用来表示一般图形。

Java程序:

public class Main {

public static void main(String[] args) {

Shape s = null;

s = new Circle(3);

System.out.println("圆的面积:" + s.area());

System.out.println("圆的周长:" + s.perimeter());

}

}

/**

* 形状类:抽象类

* @author developer

* @version 2017.05.23

*/

abstract class Shape {

/**

 * 计算形状的面积

 * @return 形状的面积

 */

abstract double area();

/**

 * 计算形状的周长

 * @return 形状的周长

 */

abstract double perimeter();

}

/**

* 圆类

* @author developer

* @version 2017.05.23

*/

class Circle extends Shape {

/**

 * 半径

 */

protected double radius;

/**

 * 构造方法

 * @param radius 半径

 */

public Circle(double radius) {

this.radius = radius;

}

@Override

double area() {

return Math.PI * radius * radius;

}

@Override

double perimeter() {

return 2 * Math.PI * radius;

}

}

运行测试:

圆的面积:28.274333882308138

圆的周长:18.84955592153876


分享名称:java代码shape java代码删除本地文件
当前URL:http://cdiso.cn/article/dodhses.html

其他资讯