【问题标题】:How to get rid of the 'cannot find symbol' errors in my code?如何摆脱我的代码中的“找不到符号”错误?
【发布时间】:2019-07-28 12:30:30
【问题描述】:

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

这是我目前的代码。

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

位置:类 CircleTest

.

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

System.out.println("圆的面积是..." + area);

符号:变量区

位置:类 CircleTest

2 个错误

【问题讨论】:

  • 看起来 CircleTest 应该扩展 Circle 或者你应该创建 Circle 对象的创建实例
  • 您的错误非常基本,我怀疑您咨询过任何人。这些都是简单的编译错误,你有什么不明白的?
  • java.util.scanner 应该是imports java.util.scanner

标签: java jcreator


【解决方案1】:

让我们从 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;  
    }

}

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

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

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

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

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

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

综上所述,您的 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;  
    }

}

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

【讨论】:

    【解决方案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)));

    这里的圆是圆类的对象

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

    应该有帮助

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

    【讨论】:

    • getArea 的两种用法都是
    • 没有方法 getArea 可以调用,也没有任何方法调用 Initger,虽然最后一个很可能是错字,但要求您编译答案中的代码是否太多了?
    • 我厌倦了为您更正您的代码。想想你发布了什么代码以及它的真正作用
    猜你喜欢
    • 2021-08-10
    • 2014-11-22
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2014-08-14
    相关资源
    最近更新 更多