首页 > 解决方案 > Java 构造函数:错误“实际参数列表和形式参数列表的长度不同”

问题描述

我一直在拼命想让这段代码工作。这是我第一次使用对象/构造函数(我是一名新程序员),这让我很困惑。我会完全诚实的;我不知道问题是什么。我已经尝试了很多东西,所以这段代码很乱。我也受够了,并再次开始编写第二个代码,但由于与第一个代码相同的原因,它也不起作用,尽管该代码的结构略有不同。我将在下面发布这两种尝试,希望有人能看到我的错误。谢谢!

尝试1:

class Circle
{
    private static double r;
    public static double rd;
    public double Circle( double r, double rd )
 {
        r = rd;
        return r;
 }
    public double calCircumference(double r)
 {
        return 2*Math.PI*r;
}
    public static double calArea(double r)
{
        return Math.PI*r*r;
}

}
class CircleApp
{
    public static void main( String[] args )
{
        double rd = Double.parseDouble( args[0] );
        System.out.println( "Circle radius = " + rd );

        // create an object of Circle with the radius rd
        Circle circle1 = new Circle();
        double cir = circle1.calCircumference();
        double area = circle1.calArea();
        System.out.println("Circumference = " + cir);
        System.out.println("Area = " + area);
    }
}

尝试2:

class Circle
{   
    public double rd = Double.parseDouble( args[0] );   
    private double r;

    public void Circle( double rd )
 {
    double r = rd;
 }
    private double calCircumference(double r)
 {
        return 2*Math.PI*r;
}
    public double calArea()
{
        return Math.PI*r*r;
}
}
class CircleApp2
{
    public static void main( String[] args )
{
        System.out.println( "Circle radius = " + rd );
        // create an object of Circle with the radius rd
        Circle circle1 = new Circle( rd);
        double cir = circle1.calCircumference();
        double area = circle1.calArea();
        System.out.println("Circumference = " + cir);
        System.out.println("Area = " + area);
}
}

任何帮助将不胜感激。另外,因为我认为我的编码可能会让你们中的大多数人想扯掉我的脑袋,所以请批评它的任何部分。我只是在这里开始学习过程,所以任何反馈/批评都会非常有帮助。再次感谢!

标签: javaoopobjectconstructor

解决方案


Constructors are not void methods. This

public void Circle( double rd )

should be

public Circle( double rd ){
    this.r = rd;
}

Then next issue is

private double calCircumference(double r)

should be

private double calCircumference()

and

public double rd = Double.parseDouble( args[0] ); 

does not make sense, that isn't in main. Putting everything together,

class Circle {
    private double r;

    public Circle(double rd) {
        this.r = rd;
    }

    public double calCircumference() {
        return 2 * Math.PI * r;
    }

    public double calArea() {
        return Math.PI * r * r;
    }
}

And then

class CircleApp2 {
    public static void main(String[] args) {
        double rd = Double.parseDouble(args[0]);
        System.out.println("Circle radius = " + rd);
        // create an object of Circle with the radius rd
        Circle circle1 = new Circle(rd);
        double cir = circle1.calCircumference();
        double area = circle1.calArea();
        System.out.println("Circumference = " + cir);
        System.out.println("Area = " + area);
    }
}

推荐阅读