我的数学有问题吗?很简单的java

时间:2017-03-10 04:26:24

标签: java coordinates

您好我的第一个编码课程。这是我使用数学的第一个代码,我正在努力查看我出错的地方,我没有错误,但计算未定义。
我需要使用3个点来找到三角形的区域。我获得了一些奖励:

s = (side1 + side2 + side3)/2    
area = sqrt(s(s-side)(s- side2)(s-side3))   
Side = sqrt(x1-y1)+ (x2-y2)

请提供帮助,这是我的代码:

double sideOne = Math.sqrt(Math.pow((x1cr - x2cr), 2 + Math.pow((y1cr - y2cr), 2)));    
double sideTwo = Math.sqrt(Math.pow((x2cr - x3cr), 2 + Math.pow((y2cr - y3cr), 2)));    
double sideThree = Math.sqrt(Math.pow((x1cr - x3cr), 2 + Math.pow((y1cr - y3cr), 2)));    
double lSide = (sideOne + sideTwo + sideThree) / 2;    
double areaTri = Math.sqrt((lSide * (lSide - sideOne) * (lSide - sideTwo) * (lSide - sideThree)));    
System.out.println("The area of your triangle is " + areaTri);

编辑:这是我老师给出的例子:

以下是一个示例运行:

输入三角形的第一个顶点(x1,y1)的坐标:1.5 -3.4

输入三角形的第二个顶点(x2,y2)的坐标:4.6 5

输入三角形的第三个顶点(x3,y3)的坐标:9.5 -3.4

三角形的面积为33.6平方厘米

2 个答案:

答案 0 :(得分:3)

问题在于您如何计算sideOnesideTwosideThree

我相信你会像这样计算sideOne

formula

然后你的代码应该是:

double sideOne = Math.sqrt(Math.pow((x1cr - x2cr), 2) + Math.pow((y1cr - y2cr), 2)); 
                                                    ^                            ^
                                                    1                            2

请注意,公式相同,但括号的位置不同。位置2的支架移动到位置1.

在计算sideTwosideThree时也应该进行类似的更改。

答案 1 :(得分:0)

请查看代码和评论。不要犹豫,询问是否不清楚:

class Test {

    //always post MCVE (stackoverflow.com/help/mcve)
    public static void main(String[] args) {

        double  x1cr=1.5, y1cr=-3.4, //side one end points 
                x2cr=4.6, y2cr=5,    //side two end points 
                x3cr=9.5, y3cr=-3.4; //side three end points 

        double sideOne = Math.sqrt(squareIt(x1cr, x2cr)+ squareIt(y1cr, y2cr) );
        double sideTwo = Math.sqrt(squareIt(x2cr, x3cr) + squareIt(y2cr, y3cr));
        double sideThree = Math.sqrt(squareIt(x1cr, x3cr)+ squareIt(y1cr, y3cr));

        System.out.println(sideOne+ " "+ sideTwo+ " "+ sideThree);

        double lSide = (sideOne + sideTwo + sideThree) / 2;
        double areaTri = Math.sqrt((lSide * (lSide - sideOne) * (lSide - sideTwo) * (lSide - sideThree)));
        System.out.println("The area of your triangle is " + areaTri);
    }

    //put the repeating calculation in a function
    //it is easy to check such function by say : 
    //  System.out.println(squareIt(5., 3.));
    static double squareIt(Double x1, double x2) {

        return Math.pow((x1 - x2), 2);
    }
}