初学者Java在构造函数上不需要参数错误

时间:2015-02-01 19:35:41

标签: java constructor compiler-errors

因此,作为一个类的作业,我试图创建一个简单的圆类,然后将其用作构造函数。 这是我的班级代码:

public class Circle
{
  private double radius;
  private double pi;

  public void setRadius(double rad)
  {
    radius = rad;
  }

  public double getRadius()
  {
    return radius;
  }

  public double getArea()
  {
    return pi * radius * radius;
  }

  public double getDiameter()
  {
    return radius * 2;
  }

  public double getCircumference()
  {
    return 2 * pi * radius;
  }
}

这是使用该类构建构造函数的程序:

import java.util.Scanner; //scanner class for input

  public class CircleDemo
{
  public static void main(String[]args)
  {
    double radiusIn; //gets radius from input

    Scanner keyboard=new Scanner(System.in); //activates scanner class in program

    System.out.print("Enter the radius of a circle: ");
    radiusIn=keyboard.nextDouble();

    Circle circularObject= new Circle(radiusIn);

    System.out.println("The circle's area is" + circularObject.getArea());
    System.out.println("The circle's diameter is" + circularObject.getDiameter());
    System.out.println("The circle's circumference is" + circularObject.getCircumference());
  }
}

我得到错误: 错误:类Circle中的构造函数Circle不能应用于给定类型;   必需:没有参数   发现:双倍   原因:实际和正式的参数列表长度不同

我的代码没有任何问题,但我再次使用我老师给我们的样本。

5 个答案:

答案 0 :(得分:7)

你在这里调用构造函数

Circle circularObject= new Circle(radiusIn);

但是你的Circle类中没有定义与你传入的参数匹配的构造函数。返回你的Circle类并定义一个带有double参数的构造函数:< / p>

public Circle(double val)
{
    //Implementation
}

注意如果你没有为类提供显式构造函数,Java会自动为你提供一个空实现,没有参数,公共构造函数供你使用。一旦定义了第一个显式构造函数,那个默认构造函数就会消失,这意味着你必须手动重新定义它。

答案 1 :(得分:0)

您的圈子类中没有构造函数

public Circle (something here) {}

答案 2 :(得分:0)

Java为您编写的每个类提供默认构造函数。你看不到它,但它就在那里,除非你自己编写任何你想要的参数,否则它会被调用。

答案 3 :(得分:0)

参数化构造函数最常用的实现之一是这样的:

double radius;
public Circle(double radius){
    this.radius = radius;
}

您不需要使用相同的名称:

double radius;
public Circle(double i){
    radius = i;
}

但是第一个版本被认为是最佳实践,应该是使用的版本。这当然适用于任何形式的参数化构造函数:

String name;
int age;
public Person(String name, int age){
    this.name = name;
    this.age = age;
}

答案 4 :(得分:0)

请添加Circle的构造函数。修改后的代码将是:

public class Circle 
{
  private double radius;
  private double pi;

  Circle(double x) 
  {
    this.radius = x;
  }

  public void setRadius(double rad) 
  {
    radius = rad;
  }

  public double getRadius() 
  {
    return radius;
  }

  public double getArea() 
  {
    return pi * radius * radius;
  }

  public double getDiameter() 
  {
    return radius * 2;
  }

  public double getCircumference() 
  {
    return 2 * pi * radius;
  }
}