Java 找不到符号:圆圈错误

Java 找不到符号:圆圈错误,java,Java,我已经编写了以下代码并不断收到错误: error: cannot find symbol Circle first = new Circle(); ^ symbol: class Circle location: class TestCircle error: cannot find symbol Circle first = new Circle(); ^ s

我已经编写了以下代码并不断收到错误:

error: cannot find symbol
        Circle first = new Circle();    
        ^
  symbol:   class Circle
  location: class TestCircle
error: cannot find symbol
        Circle first = new Circle();     
                           ^
  symbol:   class Circle
  location: class TestCircle
第二次和第三次也是如此。代码如下:

public class TestCircle {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    // Create three Circle objects
    Circle first = new Circle();     
    Circle second = new Circle();
    Circle third = new Circle();

    // Initialize radius for first and second circles
    first.setRadius(6.0);
    second.setRadius(15.0);

    // Display circle Info
    first.displayCircle();
    second.displayCircle();
    third.displayCircle();      
}

}

public class Circle {

// 
private double radius;    // circle radius
private double diameter;  // circle diameter
private double area;      // circle area
private final double pi = 3.14159265358979;   // value of pi

Circle()      // Constructor
{
    radius = 1;
    diameter = 2 * radius;
    area = pi * radius * radius;        
}

void setRadius(double rad)   // method to set radius and calculate the other two values
{
    radius = rad;
    diameter = 2 * radius;
    area = pi * radius * radius;
}

double getRadius()    // method to get radius
{
    return radius;
}

void displayCircle()     // method to display circle parameters
{
    System.out.println("Circle Info");
    System.out.println("Radius: " + radius);
    System.out.println("Diameter: " + diameter);
    System.out.println("Area: " + area);
}

}

感谢您在解决此问题时提供的任何帮助。

您需要公开您的构造函数。
如果未将其公开,则只能在包内访问它,这是导致错误的原因。

不强制在包之前添加public。但是为了获得最佳实践,您应该将每个类放在一个单独的文件中。它会起作用的。试试这个:

圆圈类:

public class Circle {

    private double radius;    // circle radius
    private double diameter;  // circle diameter
    private double area;      // circle area
    private final double pi = 3.14159265358979;   // value of pi

    public Circle() {   // Constructor
        radius = 1;
        diameter = 2 * radius;
        area = pi * radius * radius;
    }

    void setRadius(double rad) // method to set radius and calculate the other two values
    {
        radius = rad;
        diameter = 2 * radius;
        area = pi * radius * radius;
    }

    double getRadius() // method to get radius
    {
        return radius;
    }

    void displayCircle() // method to display circle parameters
    {
        System.out.println("Circle Info");
        System.out.println("Radius: " + radius);
        System.out.println("Diameter: " + diameter);
        System.out.println("Area: " + area);
    }

}
public class TestCircle {

    /**
     * @param args
     */
    public static void main(String[] args) {
                // TODO Auto-generated method stub

        // Create three Circle objects
        Circle first = new Circle();
        Circle second = new Circle();
        Circle third = new Circle();

        // Initialize radius for first and second circles
        first.setRadius(6.0);
        second.setRadius(15.0);

        // Display circle Info
        first.displayCircle();
        second.displayCircle();
        third.displayCircle();
    }

}
TestCircle类:

public class Circle {

    private double radius;    // circle radius
    private double diameter;  // circle diameter
    private double area;      // circle area
    private final double pi = 3.14159265358979;   // value of pi

    public Circle() {   // Constructor
        radius = 1;
        diameter = 2 * radius;
        area = pi * radius * radius;
    }

    void setRadius(double rad) // method to set radius and calculate the other two values
    {
        radius = rad;
        diameter = 2 * radius;
        area = pi * radius * radius;
    }

    double getRadius() // method to get radius
    {
        return radius;
    }

    void displayCircle() // method to display circle parameters
    {
        System.out.println("Circle Info");
        System.out.println("Radius: " + radius);
        System.out.println("Diameter: " + diameter);
        System.out.println("Area: " + area);
    }

}
public class TestCircle {

    /**
     * @param args
     */
    public static void main(String[] args) {
                // TODO Auto-generated method stub

        // Create three Circle objects
        Circle first = new Circle();
        Circle second = new Circle();
        Circle third = new Circle();

        // Initialize radius for first and second circles
        first.setRadius(6.0);
        second.setRadius(15.0);

        // Display circle Info
        first.displayCircle();
        second.displayCircle();
        third.displayCircle();
    }

}
注意


如果要使用单个文件,请不要忘记在
类循环之前删除单词public
。因为声明为public的每个类都应该位于一个新的单独文件中。

看来
Circle
可能与
TestCircle
位于不同的包中。如果是这种情况(如果
Circle.java
package abcde;
或顶部的某个东西),那么
TestCircle
将需要导入它:

import abcde.Circle;
而且,
Circle
中的构造函数和所有方法必须设置为
公共
,因为默认访问(“包私有”)不适用于不同包中的类


如果
Circle
没有
package
语句,那么如果
TestCircle.java
Circle.java
在同一个目录中,事情就会正常。如果它们位于不同的目录中,但没有
语句,那么我认为您需要设置
类路径
,以便它可以引用存在类的所有目录,或者如果您使用IDE,则将其配置为在不同的目录中查找内容。但我建议您要么使用包,要么将内容放在同一目录中。

您的Circle构造函数是包私有的。如果您想将access public作为公共构造函数,请添加它。您是否真的在三行中的每一行都有两个错误(即关于
圈的总共6个错误)
?如果是这样的话,那么每个人关于向构造函数添加
public
的答案本身并不能回答这个问题。如果
Circle
在另一个包中,您可能需要在
TestCircle
中导入它(并将
public
添加到构造函数中)。是的,总共有6个错误很小,Java有一个预定义的pi值。您可以使用
Math.PI
来消除声明它的需要。我不知道怎样才能把它公之于众。谢谢大家的帮助,但我只是运气不好。我要把它扔掉,再试一次。