2017-02-27 139 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