> 求任意三角形和四边形的面积都可以用行列式来求,其他几边形也都可以,这里就不多写了。(this is my first 博客。目前还很菜)
在这里插入代码片
```package 求面积;//(如果父类中有与子类相同的方法,那么子类向上转型之后,用对象的引用可以调用子类中的方法。但是如果父类中没有和子类相同的方法,则无法调用子类中的方法。
import java.util.Scanner;
public class Main {
static Scanner cin=new Scanner(System.in);
public static void main(String[] args)
{
while(cin.hasNext()) {
int x=cin.nextInt();
if(x==1) {
Triangle t=new Triangle();
t.p=new Point[3];//记得对象数组,要对每个对象都实例化。
for(int i=0;i<3;i++) {
t.p[i]=new Point();
t.p[i].x=cin.nextDouble();
t.p[i].y=cin.nextDouble();
}
System.out.printf("这是一个三角形,周长为:%.1f,面积为%.1f.\n",t.perimeter(t),t.area(t));
}
if(x==2) {
Rectangle t=new Rectangle();
t.p=new Point[4];
mpoint(t);//每个都有,直接写成方法来调用。
System.out.printf("这是一个矩形,周长为:%.1f,面积为%.1f.\n",t.perimeter(t),t.area(t));
}
if(x==3) {
Trapezoid t=new Trapezoid();
t.p=new Point[4];
mpoint(t);
System.out.printf("这是一个梯形,周长为:%.1f,面积为%.1f.\n",t.perimeter(t),t.area(t));
}
if(x==4) {
Rhomboid t=new Rhomboid();
t.p=new Point[4];
mpoint(t);
System.out.printf("这是一个平行四边形,周长为:%.1f,面积为%.1f.\n",t.perimeter(t),t.area(t));
}
if(x==5) {
Diamond t=new Diamond();
t.p=new Point[4];
mpoint(t);
System.out.printf("这是一个菱形,周长为:%.1f,面积为%.1f.\n",t.perimeter(t),t.area(t));
}
}
}
public static void mpoint(Playgon t) {
for(int i=0;i<4;i++) {
t.p[i]=new Point();
t.p[i].x=cin.nextDouble();
t.p[i].y=cin.nextDouble();
}
}
}
class Point{
double x,y;
public Point() {
super();
}
public double distance(Point p1,Point p2) {
double distance;
distance =Math.sqrt( Math.pow((p1.x-p2.x),2)+ Math.pow((p1.y-p2.y),2));
return distance;
}
}
class Playgon{
Point p[];
public Playgon() {
}
}
class Triangle extends Playgon{
public Triangle() {
super();
}
public double perimeter(Triangle t) {
double l=0;
l=t.p[0].distance(t.p[0], t.p[1])+new Point().distance(t.p[1], t.p[2])+new Point().distance(t.p[0],t.p[2]);
return l;
}
public double area(Triangle t) {
double s=0;
for(int i=0;i<3;i++) {
if(i==2) {
s=s+t.p[i].x*t.p[0].y-t.p[0].x*t.p[i].y;
}
else {
s=s+t.p[i].x*t.p[i+1].y-t.p[i+1].x*t.p[i].y;
}
}
return s/2;//行列式啊求三角形面积。
}
}
class Rectangle extends Playgon{
public Rectangle() {
super();
}
public double perimeter(Rectangle t) {
double l=0;
l=new Point().distance(t.p[0], t.p[1])+new Point().distance(t.p[1], t.p[2])+new Point().distance(t.p[2], t.p[3])+new Point().distance(t.p[3], t.p[0]);//四边形周长,四个边相加,通用。
return l;
}
public double area(Rectangle t) {
double s=0;
for(int i=0;i<4;i++) {
if(i==3) {
s=s+t.p[i].x*t.p[0].y-t.p[0].x*t.p[i].y;
}
else {
s=s+t.p[i].x*t.p[i+1].y-t.p[i+1].x*t.p[i].y;
}
}
return s/2;//行列式求四边形面积。(通用)。
}
}
class Trapezoid extends Rectangle{
public Trapezoid() {
super();
}
}
class Rhomboid extends Trapezoid{
public Rhomboid() {
super();
}
}
class Diamond extends Rhomboid{//由于类中的方法一样,可以连续继承。
public Diamond() {
super();
}
}
行列式求三角形以及任何四边形周长和面积
最新推荐文章于 2023-02-28 16:12:10 发布