您好我的第一个编码课程。这是我使用数学的第一个代码,我正在努力查看我出错的地方,我没有错误,但计算未定义。
我需要使用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平方厘米
答案 0 :(得分:3)
问题在于您如何计算sideOne
,sideTwo
和sideThree
。
我相信你会像这样计算sideOne
:
然后你的代码应该是:
double sideOne = Math.sqrt(Math.pow((x1cr - x2cr), 2) + Math.pow((y1cr - y2cr), 2));
^ ^
1 2
请注意,公式相同,但括号的位置不同。位置2的支架移动到位置1.
在计算sideTwo
和sideThree
时也应该进行类似的更改。
答案 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);
}
}