【发布时间】:2019-09-18 16:37:20
【问题描述】:
这是我的代码:
public abstract class Function{
public abstract double evaluate(double x);
public double findRoot(double a, double b, double epsilon){
if( (evaluate(a) > 0 && evaluate(b) > 0) || (evaluate(a) < 0 && evaluate(b) < 0)){
System.out.println("There is no root between these two points.");
}
double x = (a+b)/2;
if(Math.abs(a-x) < epsilon){
return x;
}
else if((evaluate(x) < 0 && evaluate(a) < 0) || (evaluate(x) > 0 && evaluate(a) > 0)){
return findRoot(x, b, epsilon);
}
else{
return findRoot(a, x, epsilon);
}
}
public static void main(String[] args){
double testSinFunc = SinFunc.findRoot(3, 4, .01);
double testCosFunc = CosFunc.findRoot(1, 2, .01);
if(testSinFunc == 3.14){
System.out.println("SinFunc.findRoot(3, 4, .01) returned 3.14. Test passed!");
}
if(testCosFunc == 1.57){
System.out.println("CosFunc.findRoot(1, 2, .01) returned 1.57. Test passed!");
}
}
}
编译器说:
非静态方法 findRoot(double, double, double) 不能 从静态上下文引用
我该怎么做才能解决这个问题?
【问题讨论】:
-
建议的链接解释了如何从静态方法调用非静态方法,但这里可能是使方法静态而不是仅为调用而实例化类对象的逻辑。
-
Coder_2,你试过我的解决方案了吗?如果对您有帮助,请将其标记为已接受
标签: java