真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼shape java代碼刪除本地文件

java如何編程定義一個(gè)shape抽象類,具有求面積、求周長、顯示輸出功能?

樓主是不是想利用Java求shape文件中 面的面積,也就是polygon或者multipolygon的面積。實(shí)際上就是不規(guī)則多邊形的面積,如果不用什么函數(shù)庫(geotools)的話,還是有現(xiàn)成的公式的,非是通過定積分推倒了一個(gè)公式而已。\x0d\x0a需要注意的是:\x0d\x0a點(diǎn)要按照逆時(shí)針或者順時(shí)針的順序添加進(jìn)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

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、塔什庫爾干塔吉克網(wǎng)站維護(hù)、網(wǎng)站推廣。

回答于?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;

//定義一個(gè)構(gòu)造函數(shù)

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;

//定義一個(gè)構(gòu)造函數(shù)

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;

//定義一個(gè)構(gòu)造函數(shù)

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("兩邊之和必須大于第三個(gè)邊");

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編程定義一個(gè)shape抽象類,具有求面積/求周長/顯示輸出功能.

樓主是不是想利用Java求shape文件中 面的面積,也就是polygon或者multipolygon的面積。實(shí)際上就是不規(guī)則多邊形的面積,如果不用什么函數(shù)庫(geotools)的話,還是有現(xiàn)成的公式的,非是通過定積分推倒了一個(gè)公式而已。

需要注意的是:

點(diǎn)要按照逆時(shí)針或者順時(shí)針的順序添加進(jìn)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坐標(biāo)對(duì)(x,y)

Point p2 = list.get(i+1); //得到p2坐標(biāo)對(duì)(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文件面文件也是由一個(gè)個(gè)坐標(biāo)點(diǎn)構(gòu)成的,無論是不規(guī)則凸多邊形還凹多邊形,都可以分成多個(gè)三角形,然后就是按一定順序求解三角形面積了。我把網(wǎng)上的一個(gè)例子修改了下,加上了泛型(廣泛的類型,類似int,double),點(diǎn)是五個(gè),你可以在此基礎(chǔ)上修改,讀取shp文件,把坐標(biāo)提取出來,然后再計(jì)算。

至于求周長之類的就是把公式變成代碼的過程,本人強(qiáng)烈建議還是用arcgis求面積比較好,

java中shape這個(gè)類是怎么用的?

注意:我已經(jīng)將一個(gè)畫圖的程序代碼發(fā)到你的QQ郵箱了,你可以參考下它的方法.

shape 在java.awt包中是一個(gè)接口,

所有已知實(shí)現(xiàn)類:

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

一個(gè)接口是不能實(shí)例化的。你是不是想保存上面這些已實(shí)現(xiàn)了的類對(duì)象?

保存一個(gè)圖,有多種方法。在此我可以給你一種思路:你可以獲得每一個(gè)對(duì)象圖的點(diǎn),邊長,高等屬性,然后將這些信息保存起來,在下次打開的時(shí)候,重新將這些圖畫一次,就能顯示了原圖了。

哈哈,這只是一種方法的。你可以想想還有沒有別的方法。在Shape是沒有方法提供保存功能的。你可以自己想個(gè)辦法如何實(shí)現(xiàn)保存。或是請(qǐng)教你的老師。

祝你成功!

JAVA程序編寫。 定義一個(gè)抽象類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?{

/**

?*?計(jì)算形狀的面積

?*?@return?形狀的面積

?*/

abstract?double?area();

/**

?*?計(jì)算形狀的周長

?*?@return?形狀的周長

?*/

abstract?double?perimeter();

}

/**

*?圓類

*?@author?developer

*?@version?2017.05.23

*/

class?Circle?extends?Shape?{

/**

?*?半徑

?*/

protected?double?radius;

/**

?*?構(gòu)造方法

?*?@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;

}

}

運(yùn)行測試:

圓的面積:28.274333882308138

圓的周長:18.84955592153876


當(dāng)前題目:java代碼shape java代碼刪除本地文件
本文地址:http://weahome.cn/article/dodhses.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部