17:计算三角形面积
总时间限制: 1000ms 内存限制: 65536kB
描述
平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。
输入
输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。
输出
输出也是一行,输出三角形的面积,精确到小数点后两位。
样例输入
0 0 4 0 0 3
样例输出
6.00
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。
Scanner sc = new Scanner(System.in);
float x[] = new float [10];
float y[] = new float [10];
//获取第一个坐标
String Line = sc.nextLine();
String[] s = Line.split(" +");
x[1] = Float.parseFloat(s[0]);
y[1] = Float.parseFloat(s[1]);
//获取第二个坐标
x[2] = Float.parseFloat(s[2]);
y[2] = Float.parseFloat(s[3]);
//获取第三个坐标
x[3] = Float.parseFloat(s[4]);
y[3] = Float.parseFloat(s[5]);
//求边长l1,l2,l3
double l1 = Math.sqrt(Math.pow((x[1]-x[2]),2)+Math.pow((y[1]-y[2]),2));
double l2 = Math.sqrt(Math.pow((x[2]-x[3]),2)+Math.pow((y[2]-y[3]),2));
double l3 = Math.sqrt(Math.pow((x[3]-x[1]),2)+Math.pow((y[3]-y[1]),2));
//海伦公式求面积S=√p(p-a)(p-b)(p-c)
double S;
double p;
p = (l1+l2+l3)/2;
S = Math.sqrt(p*(p-l1)*(p-l2)*(p-l3));
System.out.printf("%.2f",S);
}
}