如何消除代码中的 'cannot find symbol' 错误?

How to get rid of the 'cannot find symbol' errors in my code?

我目前正在做一个项目,但我不断收到错误消息。我被困住了,联系了很多人(包括我的导师),现在我转向了你们。

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

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

/

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

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

双倍面积 = getArea(r);

符号:变量r

位置:classCircleTest

.

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

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

符号:可变区

位置:classCircleTest

2 个错误

您还没有定义变量 rarea 来帮助解决这个问题

double area = getArea(r);替换为double area = circle.getArea(radius);

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

这里的圆是Class圆

的一个对象
Circle circle = new Circle(radius) //Note: circle cannot be accessed from main function create another object for class circle again in main

应该会有帮助

编辑:这里是link关于错误What does a "Cannot find symbol" compilation error mean?

让我们从 class 圈开始。这是您的原始代码:

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

}

对于您的变量,您不需要 "area",因为它是计算出来的。此外,除了在构造函数中,你不应该将半径分配给任何东西:

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

您将 "r" 传递给构造函数,但随后错误地尝试将 "radius" 值分配给它。这是倒退的;您应该将 "r" 值分配给 "radius" 而不是:

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

最后,在getArea()中,不需要传入半径,或者"area";只是 return 计算值(使用 "radius" 中的存储值,而不是 "r"):

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

放在一起,您的圈子 class 应该看起来更像:

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

}

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