繁体   English   中英

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

[英]Java error - “invalid method declaration; return type required”

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

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

感谢您的帮助,-AJ

更新1 :好的,但是我不必将第三行public CircleR(double r)为double,是吗? 在我正在学习的书中,该示例没有做到这一点。

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)所做的有什么不同? 无论出于什么原因,本书的代码中都没有错误,但是我的说法是那里有错误。

如您所见,代码public Circle(double r)....与我在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; 
  }
 ....
} 

你的代码是正确的

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;
    }
}

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

请参阅有关构造函数的本文

HTH。

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

public double diameter(){...

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

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

将类添加到main方法时,我遇到了类似的问题。 原来这不是问题,是我没有检查拼写。 因此,作为一个菜鸟,我了解到拼写错误可以并且会弄乱事情。 这些帖子帮助我“看到”了我的错误,现在一切都很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM