2017-02-27 79 views
0

我正在開發Android Studio,以製作一個字段計算器基於一個字段的計算器

這將只是一個文本字段,按鈕和另一個文本視圖。 如果我把「2 + 5 * 6」例如它必須理解操作。

任何人都可以幫助我嗎?

看看我的代碼,請

public class MainActivity extends AppCompatActivity { 
    public static final String equation = "[0-9]"; 

    String opr = " "; 
    int[] result; 
    int castedInt; 
    String temp; 
    String[] separated; 
    EditText txte; 
    TextView txtv; 

    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void buResult(View view) { 
     txte = (EditText)findViewById(R.id.editText); 
     for (int i = 0; i < txte.length(); i++) { 
      if (Pattern.matches(txte.toString(), equation)) { 
       separated[i] = txte.toString(); 
       temp = separated[i]; 
       castedInt = Integer.parseInt(temp.toString()); 
       result[i] = castedInt; 
      } 
      else { 
       opr = txte.toString(); 
      } 
      txtv.setText(result[i] + opr + result[i]); 
     } 
    } 
} 

回答

0

正如在documentation定義的正則表達式必須是正則表達式。您需要將用戶輸入轉換爲正則表達式。

Pattern.matches(String regex, CharSequence input) 

而且你總是使用整個用戶輸入:

separated[i] = txte.toString(); 

所有「分離」指標將包含相同。

0

是否確定要使用的語言支持(而不是從頭開始創建算法),你可以使用這樣的:

import javax.script.ScriptEngineManager; 
import javax.script.ScriptEngine; 
... 
ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("js"); 
txtv.setText(engine.eval(txte.toString())); 

*學分:stackoverflow.com/a/2605051/936786