计算器基于一个字段

时间:2017-02-27 11:15:11

标签: android calculator

我正在开发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]);
        }
    }
}

3 个答案:

答案 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