Java中如何将长计算字符串分离为可用计算

Java中如何将长计算字符串分离为可用计算,java,math,calculator,Java,Math,Calculator,可能重复: 抱歉这么长,也有点奇怪:标题,我想不出更好的标题了,但现在开始 我一直在用Java制作一个计算器,使用一个JFrame,它像真正的计算器一样有JButton。单击按钮时,计算将显示在文本区域中。当按下“等于”按钮时,整个计算从文本区域中提取并计算。我面临的问题是如何实际计算答案。这听起来可能有点奇怪,但假设我得到的计算结果是36+45/22。我如何将数字写入变量中,然后告诉计算机对变量执行哪些操作,以及顺序如何。这可以用无限多的变量来完成吗?有没有办法做到这一点?谢谢你的帮助。试试

可能重复:

抱歉这么长,也有点奇怪:标题,我想不出更好的标题了,但现在开始


我一直在用Java制作一个计算器,使用一个JFrame,它像真正的计算器一样有JButton。单击按钮时,计算将显示在文本区域中。当按下“等于”按钮时,整个计算从文本区域中提取并计算。我面临的问题是如何实际计算答案。这听起来可能有点奇怪,但假设我得到的计算结果是36+45/22。我如何将数字写入变量中,然后告诉计算机对变量执行哪些操作,以及顺序如何。这可以用无限多的变量来完成吗?有没有办法做到这一点?谢谢你的帮助。

试试这个,我使用一个类似的实现。很好用-D


试试这个,我使用一个类似的实现。很好用-D

您可以使用ScriptEngine:

另一个选项是。

您可以使用ScriptEngine:


另一个选项是。

如果您希望自己计算表达式,而不依赖外部API(如ScriptEngine),则必须首先解析表达式。此解析为您提供表达式的内存表示,然后您可以对其求值


处理算术表达式的常用方法是递归下降解析器。这种解析器有一个很好的特性,它在解析方法中计算解析后的表达式。不依赖计算机科学的形式语言理论的递归下降解析器示例可在

中找到。如果您希望自己计算表达式,而不依赖外部API(如ScriptEngine),则必须首先解析表达式。此解析为您提供表达式的内存表示,然后您可以对其求值


处理算术表达式的常用方法是递归下降解析器。这种解析器有一个很好的特性,它在解析方法中计算解析后的表达式。一个不依赖计算机科学的形式语言理论的递归下降解析器的例子可以在

中找到,不完全确定它在Java中是否算数。嗯-@DNA,我明白你的意思,使用js引擎:-D,但不管你喜不喜欢。这是爪哇语,你们俩都帮了大忙!非常感谢:不完全确定这在Java中算不算。嗯-@DNA,我明白你的意思,使用js引擎:-D,但不管你喜不喜欢。这是爪哇语,你们俩都帮了大忙!非常感谢:我需要任何导入语句来使用这个吗?最肯定的是,看到这个。我需要任何导入语句来使用这个吗?最肯定的是,看到这个。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
System.out.println("result = " + engine.eval("36+45/22"));