“找不到符号”的java代码

时间:2016-03-15 18:46:32

标签: java

我无法弄清楚我的代码有什么问题。我在同一目录中创建了两个不同的文件,但我一直收到此错误。感谢您的任何见解。

第一个文件是:

public class CircleDriver{
    public static void main (String[] args){
        Circle aCircle = new Circle();

        aCircle.setColor("green");
        aCircle.setRadius(10);
        aCircle.display();

        Double circleArea = aCircle.computeArea();
        Double circumference = aCircle.computeCircumference();

        System.out.println("circle area: " + circleArea);
        System.out.println("circle circumference: " + circumference);
        System.out.println();
    }
}

第二个文件是:

public class Circle{
    public double circumference;
    public double PI = 3.14159;
    public double radius;
    public double area = 0;
    public String color = "";

    public void setColor(String newColor){
        color = newColor;
    }   

    public void setRadius(double newRadius){
        radius = newRadius; 
    }

    public void display(){
        System.out.println("I am a circle");
        System.out.println("my color is " + color);
        System.out.println("my radius is " + radius);
    }

    public double computeArea(){
            return PI * radius * radius;
    }

    public double computeCircumference(){
        return 2 * PI * radius;
    }
}

当我尝试编译第一个文件时,我在命令提示符下得到了这个:

CircleDriver.java:3: error: cannot find symbol
            Circle aCircle = new Circle();
            ^
  symbol:   class Circle
  location: class CircleDriver
CircleDriver.java:3: error: cannot find symbol
            Circle aCircle = new Circle();
                                 ^
  symbol:   class Circle
  location: class CircleDriver
`2 errors

4 个答案:

答案 0 :(得分:1)

您是否将目录标记为源文件夹?他们也在同一个包里吗?如果没有,您应该使用导入。 我已经在同一个包中复制了你的类,它工作正常。输出是:

I am a circle
my color is green
my radius is 10.0
circle area: 314.159
circle circumference: 62.8318

答案 1 :(得分:0)

它们应该在相同的包中。如果不是,则必须使用完全限定名称(包名称)导入Circle类。

在eclipse的情况下,它会编译所有必需的文件。在使用命令行时,请确保同时编译Circle.javaCircleDriver.java

javac -cp . Circle.java CircleDriver.java

答案 2 :(得分:0)

您正在编译第一个文件,这意味着第二个文件Circle尚未编译。首先尝试编译第二个和第一个。

答案 3 :(得分:0)

您的代码似乎没问题,所以我假设这些文件位于不同的包中,或者编译器无法看到Circle.java类。

第一个问题的解决方案是:

  1. 将两个类移动到同一个包中。它们必须在顶部具有相同的包声明(例如package com.mycompany.myapp;

  2. 导入圈子类:import path.to.circle.clazz.Circle;

  3. 使用完全限定名称:path.to.Circle circle = new path.to.Circle();

  4. 如果是编译器,则需要使用javac命令同时编译这两个类:javac -cp . Circle.java CircleDriver.java