如果你有
class Triangle
{
private double x1,x2,x3,y1,y2,y3;
public Triangle(Point point1, Point point2, Point point3)
{
x1=point1.getX();
y1=point1.getY();
x2=point2.getX();
y2=point2.getY();
x3=point3.getX();
y3=point3.getY();
//Trying to get x and y values of point1-point3
}
double width=x1-x2;
double length=y3-y2;
public double area()
{
return (length * width)/2;
}
}
编辑:我也只是获得除了长度以外的一切价值。长度打印出0但y3和y2仍然能够打印值。我正在使用随机数生成器进行双打:
double randomValue = Math.random() * 100;
对于双打的减法,这可能是一个问题吗?
我基本上定义了两个变量x和y,我试图计算三角形的这个区域。当有人给出3分来制作这个三角形时,我正试图从这些点中获取这些值,并且我确实得到了我的积分的吸气剂,但我最终没有任何长度和宽度。
答案 0 :(得分:3)
width
和length
都应该是area()
方法内部或构造函数内部的局部变量。它可以在你的构造函数中计算,如果这个对象是不可变的,但我想说如果你把getter / setter暴露给对象,最好用area()
方法计算它们。
public double area()
{
double width=x1-x2;
double length=y3-y2;
return (length * width)/2;
}
正如您现在所拥有的那样,它们是您班级的package private members,并且在您实例化课程时正在设置。
答案 1 :(得分:1)
此代码
double width=x1-x2;
double length=y3-y2;
应该在你的构造函数中。
就像现在一样,它在构造函数之前执行,当x1,x2,y3,y2仍为0时。
double width;
double length;
public Triangle(Point point1, Point point2, Point point3)
{
x1=point1.getX();
y1=point1.getY();
x2=point2.getX();
y2=point2.getY();
x3=point3.getX();
y3=point3.getY();
// init width and length after x1,x2,y3,y2 are intialized
width=x1-x2;
length=y3-y2;
}
另一种方法是仅在您需要时计算width
和length
:
public double area()
{
double width=x1-x2;
double length=y3-y2;
return (length * width)/2;
}