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
来消除声明它的需要。我不知道怎样才能把它公之于众。谢谢大家的帮助,但我只是运气不好。我要把它扔掉,再试一次。