编程练习题4.6 (圆上的随机点)编写一个程序, 产生一个圆心在( 0, 0 )、 半径为 40 的圆上面的三个随机点, 显示 由这三个随机点组成的三角形的三个角的度数

下面的浮点型变量我都使用float型(本人习惯,能用float就不用double)

//定义3个弧度数全局变量
float rad1;
float rad2;
float rad3;
while (true) {
    //随机生成三个弧度数,范围在[0,2PI)
     rad1 = 2 * (float)(Math.PI * Math.random());
     rad2 = 2 * (float)(Math.PI * Math.random());
     rad3 = 2 * (float)(Math.PI * Math.random());
     //判断并排除3个弧度数出现相等的情况
    if (rad1 == rad2 || rad1 == rad3 || rad2 == rad3) {
        continue;
    } else {
        break;
    }
}
//求出各顶点的x,y坐标值
float x1=40*(float)Math.cos(rad1);
float x2=40*(float)Math.cos(rad2);
float x3=40*(float)Math.cos(rad3);
float y1=40*(float)Math.sin(rad1);
float y2=40*(float)Math.sin(rad2);
float y3=40*(float)Math.sin(rad3);
//输出三个顶点的坐标
System.out.print("随机产生的三个点的坐标为:\n");
System.out.printf("A(%.2f,%.2f) B(%.2f,%.2f) C(%.2f,%.2f)",x1,y1,x2,y2,x3,y3);
//计算三边长
float s1=(float)Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
float s2=(float)Math.sqrt(Math.pow(x2-x3,2)+Math.pow(y2-y3,2));
float s3=(float)Math.sqrt(Math.pow(x3-x1,2)+Math.pow(y3-y1,2));
//调用反余弦函数计算三个角的度数
float A=(float)(Math.toDegrees(Math.acos((s2*s2+s3*s3-s1*s1)/(2*s2*s3))));
float B=(float)(Math.toDegrees(Math.acos((s1*s1+s3*s3-s2*s2)/(2*s1*s3))));
float C=(float)(Math.toDegrees(Math.acos((s2*s2+s1*s1-s3*s3)/(2*s2*s1))));
System.out.print("\n三个角的度数为:\n");
System.out.printf("A:%.2f B:%.2f C:%.2f",A,B,C);

下面是运行结果示例:
编程练习题4.6 (圆上的随机点)编写一个程序, 产生一个圆心在( 0, 0 )、 半径为 40 的圆上面的三个随机点, 显示 由这三个随机点组成的三角形的三个角的度数_第1张图片

你可能感兴趣的:(java)