九决B一三角形面积

2019-05-09  本文已影响0人  就这样吧嘞

已知三角形三个顶点在直角坐标系下的坐标分别为:
(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);

上一篇 下一篇

猜你喜欢

热点阅读