Android 基于一个字段的计算器
我正在Android Studio上工作,制作一个字段计算器 它将只是一个文本字段、按钮和另一个文本视图。 如果我以“2+5*6”为例,它必须理解操作 有人能帮我吗 请查看我的密码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
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()));
*学分: