如何摆脱代码中的“找不到符号”错误?

-3 java jcreator

我目前正在从事一个项目,并且不断收到错误消息。我被困住了并且已经联系了很多人(包括我的教练),现在我已经转向你们。

到目前为止,这是我的代码。

public class Circle

    private int radius = getRadius();
    private double area = getArea();

    public Circle(int r) 
    {
        r = radius;
    }

    public int getRadius()
    {
        return radius;
    }

    public double getArea(int r)
    {
        return area = Math.PI * r * r;  
    }
}
Run Code Online (Sandbox Code Playgroud)

/

java.util.Scanner;

public class CircleTest
{
    public CircleTest()
    {
        int radius = getRadius();
        double area = getArea(r);       
    }   

    public static void main (String[] args) 
    {

        Scanner kboard = new Scanner(System.in);

        System.out.print("Give the radius of a circle. ");
        String area = kboard.nextLine();

        System.out.println("The area of the circle is... " + 
area);
        System.out.println();

        kboard.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

C:\ Users \ jthom \ My Work \ Circle \ src \ CircleTest.java:18:错误:找不到符号

两倍的面积= getArea(r);

符号:变量r

位置:类CircleTest

C:\ Users \ jthom \ My Work \ Circle \ src \ CircleTest.java:33:错误:找不到符号

System.out.println(“圆形区域为...” +区域);

符号:可变区域

位置:类CircleTest

2个错误

Idl*_*ind 5

让我们从Circle类开始。这是您的原始代码:

public class Circle

    private int radius = getRadius();
    private double area = getArea();

    public Circle(int r) 
    {
        r = radius;
    }

    public int getRadius()
    {
        return radius;
    }

    public double getArea(int r)
    {
        return area = Math.PI * r * r;  
    }

}
Run Code Online (Sandbox Code Playgroud)

对于您的变量,您不需要“区域”,因为它是计算得出的。另外,除了构造函数外,您不应该为任何东西分配半径:

    private int radius;
    //private double area = getArea(); <-- don't need this variable at all
Run Code Online (Sandbox Code Playgroud)

您将“ r”传递给构造函数,但随后错误地尝试为其分配“ radius”值。这是倒退;您应该将“ r”值分配给“半径”:

    public Circle(int r) 
    {
        radius = r;
    }
Run Code Online (Sandbox Code Playgroud)

最后,在中getArea(),您不需要传入的半径或“区域”;只需返回计算值(使用“半径”而不是“ r”中存储的值):

    public double getArea()
    {
        return Math.PI * radius * radius;  
    }
Run Code Online (Sandbox Code Playgroud)

放在一起,您的Circle类应该更像:

public class Circle

    private int radius;

    public Circle(int r) 
    {
        radius = r;
    }

    public int getRadius()
    {
        return radius;
    }

    public double getArea()
    {
        return Math.PI * radius * radius;  
    }

}
Run Code Online (Sandbox Code Playgroud)

在CircleTest中,您应该首先从用户那里获取半径,然后将其传递给Circle的构造函数。最后,使用Circle实例,调用其getRadius()和getArea()方法。