已知三角形三个顶点在直角坐标系下的坐标分别为:
(2.3, 2.5)
(6.4, 3.1)
(5.1, 7.2)
求该三角形的面积。
注意,要提交的是一个小数形式表示的浮点数。
要求精确到小数后3位,如不足3位,需要补零。
方法 用三点建立矩形 减去周围三个直角三角形 得出阴影面积
image.png
具体代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
double cunchu[][]=new double [3][2];
for(int i=0;i<3;i++) {
for(int j=0;j<2;j++) {
cunchu[i][j]=sc.nextDouble();
}
}
double gao,kuan;
double s1,s2,s3;
double sanjiao;
gao=jianju(cunchu[0][1],cunchu[1][1],cunchu[2][1]);
kuan=jianju(cunchu[0][0],cunchu[1][0],cunchu[2][0]);
s1=mianji(cunchu[0][0],cunchu[0][1],cunchu[1][0],cunchu[1][1]);
s2=mianji(cunchu[0][0],cunchu[0][1],cunchu[2][0],cunchu[2][1]);
s3=mianji(cunchu[2][0],cunchu[2][1],cunchu[1][0],cunchu[1][1]);
sanjiao=gao*kuan-(s1+s2+s3);
System.out.println(gao);//检验
System.out.println(kuan);//检验
System.out.println(s1);//检验
System.out.println(s2);//检验
System.out.println(s3);//检验
System.out.println(sanjiao);
String shuchu=String.format("%.3f", sanjiao);//转换成字符串取小数点后三位
System.out.println(shuchu);
}
public static double jianju(double a,double b,double c) {
double max,min;
if(a>b) {
if(a>c) {
max=a;
if(b>c) {
min=c;
}
else {
min=b;
}
}
else {
max=c;min=b;
}
}
else {
if(b>c) {
max=b;
if(a>c) {
min=c;
}
else {
min=a;
}
}
else {
max=c;min=a;
}
}
return max-min;
}
public static double mianji(double x1,double y1,double x2,double y2) {
double mianji;
return mianji=Math.abs(x1-x2)*Math.abs(y1-y2)/2.0;
}
}
输出结果为:
2.3 2.5
6.4 3.1
5.1 7.2
4.7
4.1000000000000005
1.2300000000000004
6.58
2.6650000000000014
8.795000000000002
8.795
关于double型数据不准确的问题;
https://www.cnblogs.com/zouhao/p/6713230.html
此题不影响;
输出位置处理方法:利用String.foemat()方法
String shuchu=String.format("%.3f", sanjiao);//转换成字符串取小数点后三位
System.out.println(shuchu);
网友评论