我了解如何使用 + - * / 按钮制作普通计算器。但是我很难把它变成字符串,那里有一个字段和一个按钮:

我不是要代码。请解释或提示如何处理此解决方案。是否正确:将数学表达式分成几部分/部分并将每个部分放入一个变量中,然后添加它?还是有其他方法?如果有一些外部资源可供阅读,我将不胜感激。
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button buttonCalc;
TextView result;
EditText task;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonCalc =(Button) findViewById(R.id.btnCalc);
}
@Override
public void onClick(View view) {
}
}
这是库 https://github.com/mariuszgromada/MathParser.org-mXparser
添加到项目中
我们这样做
还有更多功能,深入挖掘 - 这很有趣。
有很多方法可以解决这个问题。经典如下:
1)我们将源字符串拆分为标记(在您的情况下,它们与标记相同),例如,对于表达式
3 + 4 * (5 + 2),它将是:2)进一步,根据条件语言的语法规则,我们解析token数组,其结果将是一棵指令树:
3)现在我们有了一个指令树,我们开始遍历树(通常是递归的)——我们实际上进行了计算:
+树顶的标志3和符号*)*有更多的孩子,我们进入递归*,我们将得到值(在这种情况下),而不是符号 -28- 我们替换总和并得到28+3=31当然,您可以自己编写程序,但是当您采用某个库时,该变体被认为是洁净的,根据该库的规则,您可以在其中描述语法并为您收集解析该语法的源代码 -通常这是软件工程或此类专业的课程学生的任务。
经典是ANTLR
一旦我实现了这样一个东西,我就可以乘以并产生双倍值。写这段代码的时候还很年轻,所以不做严格的判断)但是你可以把它当作一个想法: https ://github.com/georrge1994/1.calculation
字符串计算器(如果有兴趣): https ://gigaom.info/index.php/programmy/strokovyj-kalkulyator “Delphi”的“TFunction”数学解析器:https://gigaom.info/index.php/iskhodnyj-kod/tfunction - for-delphi 谢尔盖