Java错误 - “无效的方法声明;需要返回类型”

时间:2011-09-17 00:47:55

标签: java

我们现在正在学习如何在Java中使用多个课程,并且有一个项目要求创建一个包含Circleradius的课程diameter ,然后从主类中引用它来找到直径。此代码继续收到错误(在标题中提到)

public class Circle
{
    public CircleR(double r)
    {
        radius = r;
    }
    public diameter()
    {
        double d = radius * 2;
        return d;
    }
}

感谢您的帮助,-AJ

更新1 : 好的,但我不应该将第三行public CircleR(double r)声明为双,对吧?在我正在学习的书中,这个例子并没有这样做。

public class Circle 

    { 
        //This part is called the constructor and lets us specify the radius of a  
      //particular circle. 
      public Circle(double r) 
      { 
       radius = r; 
      } 

      //This is a method. It performs some action (in this case it calculates the 
        //area of the circle and returns it. 
        public double area( )  //area method 
      { 
          double a = Math.PI * radius * radius; 
       return a; 
    } 

    public double circumference( )  //circumference method 
    { 
      double c = 2 * Math.PI * radius; 
     return c; 
    } 

        public double radius;  //This is a State Variable…also called Instance 
         //Field and Data Member. It is available to code 
    // in ALL the methods in this class. 
     } 

正如您所看到的,代码public Circle(double r)....与我在public CircleR(double r)中所做的有何不同?无论出于何种原因,书中的代码都没有给出任何错误,但我的说法中存在错误。

4 个答案:

答案 0 :(得分:25)

  

正如你所看到的,代码公共圆(双r)......怎么样   与我在公共CircleR(双r)中所做的不同?对于   无论如何,书中的代码都没有给出错误   我说那里有一个错误。

定义类的构造函数时,它们应与其类具有相同的名称。 因此以下代码

public class Circle
{ 
    //This part is called the constructor and lets us specify the radius of a  
    //particular circle. 
  public Circle(double r) 
  { 
   radius = r; 
  }
 ....
} 
你的代码

是正确的

public class Circle
{
    private double radius;
    public CircleR(double r)
    {
        radius = r;
    }
    public diameter()
    {
       double d = radius * 2;
       return d;
    }
}

是错误的,因为您的构造函数与其类具有不同的名称。您可以按照本书中的相同代码从

更改构造函数
public CircleR(double r) 

public Circle(double r)

或(如果你真的想把你的构造函数命名为CircleR)将你的类重命名为CircleR。

所以你的新课应该是

public class CircleR
{
    private double radius;
    public CircleR(double r)
    {
        radius = r;
    }
    public double diameter()
    {
       double d = radius * 2;
       return d;
    }
}

我还在你的方法中添加了返回类型double,如Froyo和John B.所指出的那样。

关于构造函数,请参阅此article

HTH。

答案 1 :(得分:9)

每个方法(构造函数除外)都必须具有返回类型。

public double diameter(){...

答案 2 :(得分:4)

您忘记将double声明为返回类型

public double diameter()
{
    double d = radius * 2;
    return d;
}

答案 3 :(得分:-1)

在向main方法添加类时,我遇到了类似的问题。事实证明这不是问题,是我不检查我的拼写。所以,作为一个菜鸟,我了解到错误的拼写可以而且会搞砸了。这些帖子帮助我“看到”了我的错误,现在一切都很好。