[英]Creating a Circle object Error .Java
Getting an error when compiling my main and the error is coming from my class file. 编译我的main时出错,并且错误来自我的类文件。 The object of this is to create a program that requires a user to create a circle then return to the user the area, diameter and circumference. 这样做的目的是创建一个程序,该程序要求用户创建一个圆,然后向用户返回面积,直径和周长。
java.util.Scanner;
public class Driver {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
double circumference;
double radius = 5.7;
double pi = 3.14159;
double area = 0;
Circle circleobject = new Circle();
//Get radius
System.out.println("What is the circle's Radius?");
radius = keyboard.nextDouble();
if (radius == 0.0) {
radius = 5.7;
}
System.out.println("Creating a circle object.");
//Creating the class object
Circle circle = new Circle();
System.out.println("Your circle's area: " + Circle.getArea());
System.out.println("Your circle's Diameter " + Circle.getDiameter());
System.out.println("Your circle's Circumference " + Circle.getCircumference());
}
This is my class file 这是我的课程文件
public class Circle {
double circumference;
double radius = 0.0;
double pi = 3.14159;
double area = 0;
public void setRadius() {
radius = radius;
}
public void radius() {
radius = 0.0;
}
public void getArea(double area) {
area = 0;
area = pi * radius * radius;
}
public void getDiameter(double diameter) {
diameter = radius * 2;
}
public void getCircumference(double circumference) {
circumference = 2 * pi * radius;
}
}
This is the error that shows up when I compile the main. 这是我编译主程序时出现的错误。
Driver.java:38: error: method getCircumference in class Circle cannot be applied to given types;
System.out.println("Your circle's Circumference " + Circle.getCircumference());
^
required: double
found: no arguments
reason: actual and formal argument lists differ in length
1 error
Your method 你的方法
public void getCircumference(double circumference)
{
circumference = 2 * pi * radius;
}
should be rewritten as: 应该改写为:
public double getCircumference() {
return 2 * pi * radius;
}
Using Java conventions, you should use getters and setters in the following way: 使用Java约定,应该以以下方式使用getter和setter:
private xxx myAttribute;
// Here you can check if passed values are correct, for example if you expect a negative value or not.
public void setMyAttribute(xxx a) {
this.myAttribute=a;
}
// It just returns the current value
public xxx getMyAttribute() {
return myAttribute;
}
You should replace this method: 您应该替换此方法:
public void getCircumference(double circumference) {
circumference = 2 * pi * radius;
}
By this : 这样 :
public double getCircumference() {
return 2.0 * pi * radius;
}
Ie It should not take any parameters, and return the circumference as the result value. 即,不应使用任何参数,并返回圆周作为结果值。
Edit 编辑
You should modify your getArea
and getDiameter
as well : 您还应该修改getArea
和getDiameter
:
public double getArea() {
return pi * radius * radius;
}
public double getDiameter() {
return radius * 2;
}
Edit2 EDIT2
If I may say so, you should modify your code further. 如果可以这样说,您应该进一步修改代码。 First, your Circle
class should look like this: 首先,您的Circle
类应如下所示:
PI
is a static constant (the same for every instance of Circle) PI
是静态常数(每个Circle实例都相同) radius
parameter, thus you can instantiate a new Circle
providing the radius
您应该添加一个带有radius
参数的构造函数,这样就可以实例化一个提供radius
的新Circle
radius
and PI
它们直接根据radius
和PI
计算 getRadius()
method to provide public access to the radius
value. 添加getRadius()
方法以提供对radius
值的公共访问。 There is an example of what I would do: 有一个我会做的例子:
public class Circle {
private static final double PI = 3.14159;
private double radius = 0.0;
public Circle(double radius){
setRadius(radius);
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public double getArea() {
return PI * radius * radius;
}
public double getDiameter() {
return 2.0 * radius;
}
public double getCircumference() {
circumference = 2.0 * PI * radius;
}
}
Thus, your main program would look like this: 因此,您的主程序将如下所示:
java.util.Scanner;
public class Driver {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
double radius;
Circle circleobject = new Circle(radius);
//Get radius
System.out.println("What is the circle's Radius?");
radius = keyboard.nextDouble();
if (radius == 0.0) {
radius = 5.7;
}
System.out.println("Creating a circle object.");
//Creating the object
Circle circle = new Circle(radius);
System.out.println("Your circle's area: " + circle.getArea());
System.out.println("Your circle's Diameter " + circle.getDiameter());
System.out.println("Your circle's Circumference " + circle.getCircumference());
}
}
I removed some useless variables ( circumference
, pi
and area
), modified the way you instantiate the Circle
object (using the new constructor) and modify the call to getArea()
, getDiameter()
, getCircumference()
(you called them as static methods, but you need to call them on the instanciation circle
since they are not static methods). 我删除了一些无用的变量( circumference
, pi
和area
),修改了实例化Circle
对象的方式(使用新的构造函数),并修改了对getArea()
, getDiameter()
, getCircumference()
调用(将它们称为静态方法) ,但您需要在实例化circle
上调用它们,因为它们不是静态方法)。
I suggest you to take a look at Understanding Instance and Class Members and Returning a Value from a Method Oracle's articles, and more generally to the whole Classes and Objects chapter . 我建议您看一下理解实例和类成员并从 Oracle的文章中,特别是在整个类和对象一章中 , 从方法中返回值 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.