java中如何声明类错误的是_关于Java错误:Java错误-“无效的方法声明; 需要返回类型”...

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

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

Javac通常非常有用,并且返回的错误消息也很清楚。 下次当您遇到其中一种情况时,可以短暂休息一下,答案就会出来:)

CircleR不是Circle的构造函数。 名称必须匹配。

As you can see, the code public Circle(double r).... how is that

different from what I did in mine with public CircleR(double r)? For

whatever reason, no error is given in the code from the book, however

mine says there is an error there.

在定义类的构造函数时,它们应与该类具有相同的名称。

因此下面的代码

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。

好的,但是现在它突出显示了半径= r;部分,并说"找不到符号-变量类"。并感谢您的文章,即时通讯正在阅读中。

没关系,我意识到在最底层,我需要说出公共双半径;但是,这是什么原因呢?为什么我要在公共Circle(double r)的内部而不是底部声明?

因为... double r是构造函数的参数。 double radius;在任何方法之外,是类中的一个字段。方法返回时,参数将被丢弃。字段与类实例一样存在。

(对于双重半径字段,P.S。private将比public更合适。)

@Alex我不好,我应该注意到您的构造函数radius变量未在任何地方定义。无论如何,我编辑了代码并添加了私有双半径字段。很高兴您喜欢我提供的链接,这里提供了另一个用于定义Java方法的链接:tutorialspoint.com/java/java_methods.htm

@Alex我之前提到过,如果您想将构造函数名称更改为CircleR,则也需要将类名称更改为CircleR。我忘了提到Java文件应该与其类共享相同的名称。例如,公共类Circle必须另存为Circle.java,公共类CircleR必须另存为CircleR.java。编程愉快!

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

public double diameter(){...

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

public double diameter()

{

double d = radius * 2;

return d;

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值