【问题标题】:Calculator based on one field基于一个字段的计算器
【发布时间】:2017-02-27 11:15:11
【问题描述】:

我正在使用 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]);
        }
    }
}

【问题讨论】:

    标签: android calculator


    【解决方案1】:

    您应该为字符串实现反向波兰表示法。 示例代码可以在这里找到https://codereview.stackexchange.com/questions/120451/reverse-polish-notation-calculator-in-java

    【讨论】:

      【解决方案2】:

      documentation 中定义的正则表达式必须是正则表达式。您需要将用户输入转换为正则表达式。

      Pattern.matches(String regex, CharSequence input)
      

      而且你总是使用整个用户输入:

      separated[i] = txte.toString();
      

      所有“分离”的索引都将包含相同的索引。

      【讨论】:

        【解决方案3】:

        如果可以使用语言支持(而不是从头开始创建算法),您可以这样使用:

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-22
          • 1970-01-01
          • 1970-01-01
          • 2016-07-08
          • 2012-07-12
          • 1970-01-01
          • 2023-03-12
          相关资源
          最近更新 更多