Java 当我创建一个对象并传递参数时,我的类的构造函数失败了

Java 当我创建一个对象并传递参数时,我的类的构造函数失败了,java,object,constructor,Java,Object,Constructor,编程新手,但构造函数似乎是一个直截了当的概念。只是不明白为什么当我在测试类中创建一个对象并传递参数时,它们无法初始化多边形类的字段 public class Polygon{ private int numSides; private double sideLength, xCoord, yCoord, apothem, perimeter; public Polygon(){ this.numSides = 4; this.side

编程新手,但构造函数似乎是一个直截了当的概念。只是不明白为什么当我在测试类中创建一个对象并传递参数时,它们无法初始化多边形类的字段

public class Polygon{

    private int numSides;
    private double sideLength, xCoord, yCoord, apothem, perimeter;


    public Polygon(){
        this.numSides = 4;
        this.sideLength = 10.0;
        this.xCoord = 0.0;
        this.yCoord = 0.0;
        this.apothem = 5.0;
        this.perimeter = 20.0;
    }

    public Polygon(int numSides, double sideLength, double xCoord, double yCoord, double apothem, double perimeter){
        this.numSides = numSides;
        this.sideLength = sideLength;
        this.xCoord = xCoord;
        this.yCoord = yCoord;
        this.apothem = apothem;
        this.perimeter = perimeter;
    }

    public static double getArea(double apothem, double perimeter) {
        double area = .5 * apothem * perimeter;
        return area;
    }

    public static String toString(int numSides, double sideLength, double xCoord, double yCoord, double apothem){
        String results = String.format("toString() results: (numSides=%d, sideLength=%.1f%n, xCoord=%.1f%n, yCoord=%.1f%n, apothem=%.1f%n)", numSides, sideLength, xCoord, yCoord, apothem);
        return results;
    }
}
还有考试班

public class TestPolygon {

    public static void main(String[] args){  

        Polygon testPoly = new Polygon(4, 10.0, 0.0, 0.0, 5.0, 20.0);
        String results = testPoly.toString();
        System.out.println(results);
        double area = testPoly.getArea();
        System.out.printf("getArea() results: %.1f%n", area);   

    } // End main method

}
您正在调用Polygon.toString,但已经实现了Polygon.toString,double,double,double,double,double


去掉toString覆盖对象中的参数。然后,toString将正常工作。而且,它不能是静态的

您的代码甚至不应该编译,因为您正在调用getArea。。。没有它的参数

但是话说回来,getArea首先不应该需要参数,而且绝对不应该是静态的


此外,toString不应该是静态的,不应该接受任何参数,并且上面应该有一个@Override注释。

现在解释一下您期望发生的事情和实际发生的事情。公共静态字符串toString不会覆盖toString。我希望我在测试类中创建一个对象并传递构造函数中的所有参数,在使用该对象调用时,我将不再需要传递参数多边形类中的方法。发生的事情是,构造函数中没有一个字段是用我传递的参数初始化的。@smus87:你根本不能这么说,因为你的测试是错误的,正如下面的答案所解释的。换句话说,你找错了方向:问题根本不是构造器,而是你如何打印出来。再次,我很惊讶代码甚至编译。是的,我忙着查看构造函数的错误,我没有考虑代码的其余部分,谢谢大家的帮助。就像你说的,它工作得很好。谢谢你的帮助。