我正在开发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 :(得分:0)
您应该为字符串实现反向抛光表示法。 可以在此处找到示例代码https://codereview.stackexchange.com/questions/120451/reverse-polish-notation-calculator-in-java
答案 1 :(得分:0)
正如documentation正则表达式中定义的那样,必须是正则表达式。您需要将用户输入转换为正则表达式。
Pattern.matches(String regex, CharSequence input)
此外,您始终使用整个用户输入:
separated[i] = txte.toString();
所有&#34;分开&#34;索引将包含相同的内容。
答案 2 :(得分:0)
如果可以使用语言支持(而不是从头开始创建算法),您可以这样使用:
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
...
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
txtv.setText(engine.eval(txte.toString()));
* credits:stackoverflow.com/a/2605051/936786