在java中访问公共构造函数中的变量

时间:2014-11-15 05:46:02

标签: java

如果你有

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分来制作这个三角形时,我正试图从这些点中获取这些值,并且我确实得到了我的积分的吸气剂,但我最终没有任何长度和宽度。

2 个答案:

答案 0 :(得分:3)

widthlength都应该是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;
  }

另一种方法是仅在您需要时计算widthlength

  public double area() 
  { 
    double width=x1-x2;
    double length=y3-y2;
    return (length * width)/2; 
  }