无法正确设置构造函数

时间:2015-03-22 08:32:42

标签: java oop constructor

这是我的任务:(使用netbeans)

a。不从任何其他类继承

b。包含四个私有实例,所有类型为“Point”,变量名为

point1
point2
point3
point4

℃。 创建一个采用以下值的构造函数:

我。 double x1, double y1,double x2, double y2,double x3, double y3, double x4,double y4

II。构造函数应该创建并设置四个Point实例变量

d。该课程应包含以下内容:

我。 getPoint1( ) II。 getPoint2( ) III。 getPoint3( ) IV。 getPoint4( )

e。该类应包含一个名为getCoordinatesAsString()的方法,该方法返回格式化的S tring "%s, %s, %s, %s\n", point1, point2, point3, point4

这是我到目前为止所拥有的:

public class Quadrilateral {

private Point point1;
private Point point2;
private Point point3;
private Point point4;

public Quadrilateral(double x1, double y1,double x2,double y2,double x3,double y3,double x4,double y4)
{
    point1 = x1,y1;
    point2 = x2,y2;
    point3 = x3,y3;
    point4 = x4,y4;
}

public Point getPoint1()
{
    return point1;
}

public Point getPoint2()
{
    return point2;
}
public Point getPoint3()
{
    return point3;
}
public Point getPoint4()
{
    return point4;
}

    public String getCoordinatesAsString()
{
    return String.format("%s, %s, %s, %s\n", point1,point2,point3,point4);
}

public String toString()
{
    return String.format("%s:\n%s", "Coordinates of Quadrilateral are", getCoordinatesAsString());
}



}

我无法弄清楚如何正确设置构造函数。我收到一个错误说不兼容的类型,double不能转换为Point。

4 个答案:

答案 0 :(得分:1)

您没有正确构建积分。

尝试:

public Quadrilateral(double x1, double y1,double x2,double y2,double x3,double y3,double x4,double y4)
{
    point1 = new Point(x1,y1);
    point2 = new Point(x2,y2);
    point3 = new Point(x3,y3);
    point4 = new Point(x4,y4);
}

答案 1 :(得分:1)

当您创建类(对象)的新实例时,您将调用其构造函数 这是通过使用new关键字完成的。

Point结构是一个类,您希望创建它的实例 您反而尝试将其设为double值,同时您应创建一个新的Point对象,并将两个值为parameters的值传递给点constructor

所以使用Quadrilateral关键字创建Quadrilateral构造函数中的点与创建new对象的方式相同!

答案 2 :(得分:0)

您也可以向Quadrilateral构造函数发送指向。制作Quadrilateral构造函数的重载版本 -

public Quadrilateral(Point point1, Point point2, Point point3, Point point4)
{
    this.point1 = point1;
    this.point2 = point2;
    this.point3 = point3;
    this.point4 = point4;
}  

然后从Quadrilateral的客户端,您可以像这样构建Quadrilateral -

Quadrilateral aQuadrilateral = new Quadrilateral(new Point(x1, y1), new Point(x2, y2),new Point(x3, y3), new Point(x4, y4) );

答案 3 :(得分:0)

四边形类的构造函数更改为

point1 = new Point(x1,y1);
point2 = new Point(x2,y2);
point3 = new Point(x3,y3);
point4 = new Point(x4,y4);

您的 Point 类应该类似于

Class Point {
    private double x;
    private double y;

    public Point (double x, double y) {
        this.x = x;
        this.y = y;
    }

    public String getCoordiantes () {
        return String.format("("+ %f +","+ %f +")" , this.x, this.y);
    }

    (...) //other methods
}