0

Java コード...

私が持っている場合

int num = 10 + 5;
System.out.println(num);

結果は15

そしてもし私が持っているなら

String str = "10";
int number = Integer.parseInt(str);
System.out.println(number);

結果は10

しかし、私が持っている場合

String str = "10 + 5"; //here the problem.
int number = Integer.parseInt(str);
System.out.println(number);

結果はエラーメッセージです。

正しく行う方法。実装したいのは、文字列から式を取得して計算することです。JTextfield から取得するため、文字列から取得する必要があるため、返された文字列式の計算を行いたいと考えています。

4

3 に答える 3

2

ある種の「式評価器」が必要なため、直接行う簡単な方法はありません。1 つの方法は、スクリプト ライブラリの JavaScript エンジンを使用することです。

public static void main(String[] args) throws Exception {
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");

    String s = "10 + 5";
    int  result = ((Double) engine.eval(s)).intValue();
    System.out.println(result); // 15
}
于 2012-08-04T17:54:52.977 に答える
0

同様の質問がすでに回答されているようです: Is there an eval() function in Java?

ただし、文字列を配列に分割し、操作を処理するアルゴリズムを作成することで、非常に単純なパーサーを作成できます。

于 2012-08-04T17:56:14.200 に答える
0

式パーサーを記述してオペランドと演算子を分離し、それに応じて操作を実行する必要があります。10 + 5に渡してInteger.parseInt()評価結果を期待することはできません。

于 2012-08-04T17:56:15.307 に答える