2016-03-21 34 views
2

私はポイントに私の質問をします。私はいくつかの価値と演算子を持つ文字列を持っています。私はそれがクラッシュしたInteger.parseInt()を行うのであれば5演算子を持つ文字列を整数に解析するには?

- さんが

4 * 24 + Math.sqrt(36)の例を見てみましょう。さらに検索すると、パーサを使用する必要があることが分かりました。しかし、彼らはアンドロイドにあるのに対し、彼らはコマンドラインjavaのためだった。

私の質問は、この文字列 "4 * 24 + Math.sqrt(36) - 5"を結果を計算する整数に変換する方法です。また、この方法にはMath.sqrt()機能が含まれますか?

ありがとうございました。

EDIT 1:

私はこのエラーを取得するあなたのMAVEN方法をしようとすると

をhacker13uaに応じて。なぜどんなアイデアですか?

原因:java.lang.StringIndexOutOfBoundsException:length = 1; regionStart = 0; regionLength = 3

マイコード:

final String foo = "4 * 24 + Math.sqrt(36) - 5"; 
        Object i = MVEL.eval(foo); 
        String in = i.toString(); 
        Toast.makeText(MainActivity.this,String.valueOf(in).toString(), Toast.LENGTH_LONG).show(); 

そして、これが私のGradleのビルドファイルである

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:appcompat-v7:22.2.0' 
compile 'org.mvel:mvel2:2.2.7.Final' 

}

おかげ

+0

、このリンクをチェックしてください... http://stackoverflow.com/questions/8661634/execute-java-code-in-java希望それはあなたに役立ちます –

+0

あなたはAndroidで実行するための一般的な表現言語のいずれかを取得しようとすることができますしようとすることができます。たとえば、[Unified EL](https://en.wikipedia.org/wiki/Unified_Expression_Language)から始めます。 – JimmyB

答えて

2

あなたはjavascriptエンジンを使用することができます。

import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
import javax.script.ScriptException; 

public class Main 
{ 
    public static void main(final String[] args) throws ScriptException 
    { 
     final ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); 
     final ScriptEngine engine = scriptEngineManager.getEngineByName("javascript"); 
     final String foo = "4 * 24 + Math.sqrt(36) - 5"; 
     System.out.println(engine.eval(foo)); 
    } 
} 

また、MVELを使用することもできます。 Mavenの依存関係:

<dependency> 
    <groupId>org.mvel</groupId> 
    <artifactId>mvel2</artifactId> 
    <version>2.2.7.Final</version> 
</dependency> 

あなたのコード:

import org.mvel2.MVEL; 

public class Main 
{ 
    public static void main(final String[] args) 
    { 
     final String foo = "4 * 24 + Math.sqrt(36) - 5"; 
     System.out.println(MVEL.eval(foo)); 
    } 
} 
+0

System.printlnコマンドラインjavaです。しかし、1つの私のPCが必要です。私は旅行中ですので、電話でIDEを使用しています。私に数日を与えると、私は答えに返信します。しかし私が信じる最初の部分はコマンドラインのためのものです。私はこの答えを別の質問に見ました。私はクラスをインポートできませんでした。その理由は –

+0

上記の私の編集をご覧ください。また、どのようにjavaxメソッドを使用しますか。いくつかのAPIを追加する必要がありますか?もしそうなら、どのように? –

関連する問題