2017-10-04 11 views
-6

私は他のクラスを呼び出すときに関数を使用するいくつかの問題があります。Java関数を使用して

メインクラス:

public static void main(String [] args) { 
    baseIteration(new Function() { 
     public double calculate(double x) { 
      return Math.sin(x) - Math.log10(x); 
     } 

     @Override 
     public Object apply(Object t) { 
      // TODO Auto-generated method stub 
      return null; 
     } 
    }.calculate(double x),0,10.0); 
} 

そしてbaseIteration機能:

public static void baseIteration(Function f, double a, double b) { 
    double prev = f.calculate(a); 
    double step = (b-a)/10; 
    for(double p = a+step; p<=b+10e-8; p+=step) { 
     double curr = f.calculate(p); 
    } 
} 

それはすべてではありませんが、主な問題:f.calculationは未定義です!

答えて

0

まあ、Functionは、calculateメソッドを持たず、applyメソッドしか持っていません。また、通常は明示的にFunctionを実装する必要はありません。

は、以下のことを試してみてください。

public static void main(String [] args) { 
    baseIteration(x -> Math.sin(x) - Math.log10(x), 0, 10.0); 
} 

public static void baseIteration(Function<Double, Double> f, double a, double b) { 
    double prev = f.apply(a); 
    double step = (b-a)/10; 
    for(double p = a+step; p<=b+10e-8; p+=step) { 
     double curr = f.apply(p); 
    } 
} 
+0

それが仕事を始めています!ありがとうございます!私は今アルゴリズムに問題がありますが、動作し始めています!ありがとう! – Maksym

関連する問題