这是我在 JAVA 中的第一个程序,我无法理解这个错误
Cannot make a static reference to the non-static field *
和
无法对非静态方法进行静态引用 *
public class Cerchio{
float r;
float area;
float cfr;
final double pi = 3.14;
public static void main(String[] args){
System.out.println("CIRCLE PROGRAM\n");
r = 5;
c_cfr();
c_area();
System.out.ptintln("The cir is: " + cfr);
System.out.println("The area is: " + area);
}
float c_cfr(){
cfr =(float)(2 * pi * r); //casting
return cfr;
}
float c_area(){
area = (float)(pi * (r*r));
return area;
}
}
你能给我什么建议吗?我在 Android 上的 SandIDE 上编码
原文由 Mitro 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在从静态方法中调用实例方法和字段,这是无法完成的,因为没有对象就不存在实例字段和方法,并且在主要方法内部没有
this
对象.您必须改为创建该类的实例,然后调用该实例的方法。还有很多问题,…
请搜索此站点,因为同样的问题已被询问和回答了无数次,而且很可能那里的答案比我的好得多。如果找到,则应将此问题作为重复问题关闭。
编辑
你声明:
您的字段是:
这实际上不是一个字段而是一个常数:final double pi = 3.14;
并且可以通过简单地使用 Math.PI 来替换/改进。
您的字段应更改为:
你应该只通过公共的 getter 和 setter 方法访问它们,并且只有在绝对必要的情况下。