2016-08-12 9 views
0

私は最終的にゲームのダイスローラーとして使用されるAndroidアプリを作っています。私はストリングに方程式を入力するキーパッドを持っています。私はその後、配列に文字列を解析し、方程式を計算する必要があります。私はforループを使用して配列を調べていますが、それが現れたときに乗算をどのように処理するかはわかりません。一例として、2つの配列アイテムを掛ける方法

String theEquation = "2 + 3 * 6"; 
String[] result = theEquation.split("\\s+"); 

は、だから私は今それに2を持つ配列を持っている、+、3、*、6。私はそれを20の答えに変えようとどうしたらいいですか?

私は最初にforループを使用して配列全体を追加しました。それはちょうど追加であるときにうまく動作します。しかし、私は乗算を追加すると、物事はうんざりする。あなたはjavax.script.ScriptEngine

出力

20 

このコードを参照してください使用することができます

+0

方程式パーサーが必要です。 –

+0

これは広いトピックです。あなたはサポートしたい操作の種類、入力値が許されるものなどを指定する必要があります。不思議の国のご一進:なぜあなたはサイコロゲームにこのようなことが必要ですか? –

+0

これを確認してください:http://stackoverflow.com/questions/1432245/how-to-parse-a-mathematical-expression-given-as-a-string-and-return-a-number – beeb

答えて

2

:あなたはインタプリタのいくつかの種類を実装するために求めている

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

public class EvaluateExpr { 
    public static void main(String[] args) throws Exception{ 
    ScriptEngineManager se = new ScriptEngineManager(); 
    ScriptEngine scriptengine = se.getEngineByName("JavaScript"); 
    String theEquation = "2 + 3 * 6"; 
    System.out.println(scriptengine.eval(theEquation)); 
    } 
} 
+1

ちょうどスクリプトエンジンにコードを与えるだけで、コードインジェクション攻撃を求めているだけです。 –

+0

私はこれ(StackOverflow)がバリデーションを行うのに適切だとは思わない。それは別の質問でなければなりません。私は論理を供給するだけです。 –

+0

よくある落とし穴/危険を指摘してください –

0

は、基本的には、単純な数学の表記法を解釈し、真の結果をもたらします。

基本的なレベルのインタプリタを自分で開発したい場合は、hereでPythonで書かれた非常に良いサンプルを見つけることができます(心配しないで、Pythonは読みやすく理解しやすいです)。リンクで

ザ・Pythonコードは、単純に次のように機能します。

$ Pythonのcalc1.py

カルク> 3 + 4

カルク> 3+ 5

CALC> 3 + 9

CALC>

ジャワhereで書かれた別のサンプルもあります。

あなたが必要とするのは何とかStringで与えられた数学を計算することです。@ Ramanの答えはあなたの問題の解決に非常に適しています。

関連する問題