1

私は次のxmlファイルを持っています:

<?xml version="1.0" encoding="UTF-8"?>

<root>
    <eq1>-3.874999999999* Math.pow(x, 4.0) + 48.749999999993* Math.pow(x, 3.0)</eq1>
    <eq2>-0.166666666667* Math.pow(x, 4.0) + 2.166666666667* Math.pow(x, 3.0)</eq2>
</root>

これらの2つの方程式を解析し、さらに計算するために変数に配置したいと思います。私が現在使用している方法は、それらを解析して文字列に配置することですが、方程式を使用して計算を実行する必要があるため、機能しません。

これを回避するために使用できるより良い方法はありますか?前もって感謝します。

4

2 に答える 2

2

JAXBを使用して、XMLファイルをこれらのフィールドを持つカスタムオブジェクトにアンマーシャリングできます。

オブジェクトはおそらく次のようになります。

@XmlRootElement
public class Equations {

    String eq1;
    String eq2;

    // create getters and setters as well
    // and put the @XmlElement annotation on the setters
}

そして、Equationsオブジェクトからそれらを使用します。(equations.getEq1()例えば);

JAXBの非常にシンプルで簡単な紹介は次のとおりです。http ://www.mkyong.com/java/jaxb-hello-world-example/

方程式の実行に関して、1つの方法は、文字列を解析して、使用している命令と数値を確認し、それらをスタックに配置し、すべてが解析されたら、操作を実行することです(スタックに数値と演算があります)。 )。多分それはもう少し仕事ですが、それは間違いなく問題を解決するための興味深い方法です。

于 2012-04-11T14:35:24.680 に答える
0

BeanShellエバリュエーターを試してください。

import bsh.EvalError;
import bsh.Interpreter;

public class BeanShellInterpreter {

  public static void main(String[] args) throws EvalError {

    Interpreter i = new Interpreter();  // Construct an interpreter
    i.set("x", 5);
    // Eval a statement and get the result
    i.eval("eq1 = (-3.874999999999* Math.pow(x, 4.0) + 48.749999999993* Math.pow(x, 3.0))");
    System.out.println( i.get("eq1") );
  }
}
于 2012-04-11T14:03:35.167 に答える