Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 基于一个字段的计算器_Android_Calculator - Fatal编程技术网

Android 基于一个字段的计算器

Android 基于一个字段的计算器,android,calculator,Android,Calculator,我正在Android Studio上工作,制作一个字段计算器 它将只是一个文本字段、按钮和另一个文本视图。 如果我以“2+5*6”为例,它必须理解操作 有人能帮我吗 请查看我的密码 public class MainActivity extends AppCompatActivity { public static final String equation = "[0-9]"; String opr = " "; int[] result; int caste

我正在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]);
        }
    }
}
public类MainActivity扩展了AppCompatActivity{
公共静态最终字符串表达式=“[0-9]”;
字符串opr=“”;
int[]结果;
内浇铸力;
字符串温度;
字符串[]分隔;
编辑文本txte;
TextView-txtv;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
公共作废结果(视图){
txte=(EditText)findViewById(R.id.EditText);
对于(int i=0;i
您应该为字符串实现反向波兰符号。 示例代码可以在这里找到

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

Pattern.matches(String regex, CharSequence input)
此外,您始终使用整个用户输入:

separated[i] = txte.toString();

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

如果可以使用语言支持(而不是从头创建算法),则可以使用以下方法:

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