废话不多说,直接看代码,注释已经很清楚了
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请分别输入三点坐标");
int a1=in.nextInt(),a2=in.nextInt();
int b1=in.nextInt(),b2=in.nextInt();
int c1=in.nextInt(),c2=in.nextInt();
double zc=zhouchang(a1,a2,b1,b2,c1,c2);//周长
System.out.println("周长:"+String.format("%.2f", zc));//输出周长
System.out.println("面积:"+String.format("%.2f", mianji(a1, a2, b1, b2, c1, c2)));//输出面积
System.out.println(zhongxin(a1, a2, b1, b2, c1, c2));//输出重心坐标
System.out.println(waixin(a1,a2,b1,b2,c1,c2));//输出外心坐标
System.out.println(neixin(a1,a2,b1,b2,c1,c2));//输出内心坐标
}
private static double distance(int a1, int a2, int b1, int b2) {//求两点距离
double l=Math.sqrt((a1-b1)*(a1-b1)+(a2-b2)*(a2-b2));
return l;
}
private static double zhouchang(int a1, int a2, int b1, int b2, int c1, int c2) {//求周长
double l1=distance(a1, a2, b1, b2);
double l2=distance(a1, a2, c1, c2);
double l3=distance(b1, b2, c1, c2);
return l1+l2+l3;
}
private static double mianji(int a1, int a2, int b1, int b2, int c1, int c2) {//求面积
return Math.abs((a1*b2-a1*c2+b1*c2-b1*a2+c1*a2-c1*b2)/2.0);
}
private static String zhongxin(int a1, int a2, int b1, int b2, int c1, int c2) {//求重心
return "重心坐标:"+String.format("%.2f", (a1+b1+c1)/3.0)+" "+String.format("%.2f", (a2+b2+c2)/3.0);
}
private static String waixin(int a1, int a2, int b1, int b2, int c1, int c2) {//求外心
double a=b1-a1;
double b=b2-a2;
double c=(b1*b1+b2*b2-a1*a1-a2*a2)/2.0;
double d=c1-b1;
double e=c2-b2;
double f=(c1*c1+c2*c2-b1*b1-b2*b2)/2.0;
double x=(e*c-b*f)/(a*e-d*b);
double y=(c*d-a*f)/(b*d-a*e);
return "外心坐标:"+String.format("%.2f", x)+" "+String.format("%.2f", y);
}
private static String neixin(int a1, int a2, int b1, int b2, int c1, int c2) {//求内心
double a=distance(b1, b2, c1, c2);
double b=distance(a1, a2, c1, c2);
double c=distance(a1, a2, b1, b2);
double x=(a*a1+b*b1+c*c1)/(a+b+c);
double y=(a*a2+b*b2+c*c2)/(a+b+c);
return "内心坐标:"+String.format("%.2f", x)+" "+String.format("%.2f", y);
}
}
运行结果: