Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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
Java 使用用户输入的动态计算器?_Java_Calculator - Fatal编程技术网

Java 使用用户输入的动态计算器?

Java 使用用户输入的动态计算器?,java,calculator,Java,Calculator,我正在尝试制作一个计算器,它使用多个参数从字符串中获取输入 例如: 用户输出:14+20*8 然后它将进行计算并返回一个变量 我看到了类似这样的东西,但是代码对我来说太高级了,它不是我想要的。我已经看过了其他的问题,但它们似乎没有达到这个程度 我曾想过使用字符串生成器,然后将每个参数分解成一个变量,然后用这种方法进行计算,但我不太确定如何做到这一点。一个聪明的方法是使用一个。更简单的是,您可以不允许使用括号,并要求用户用空格分隔每个标记(因此14+20可以,但不允许14+20),然后使用字符串#

我正在尝试制作一个计算器,它使用多个参数从字符串中获取输入

例如: 用户输出:14+20*8

然后它将进行计算并返回一个变量

我看到了类似这样的东西,但是代码对我来说太高级了,它不是我想要的。我已经看过了其他的问题,但它们似乎没有达到这个程度


我曾想过使用字符串生成器,然后将每个参数分解成一个变量,然后用这种方法进行计算,但我不太确定如何做到这一点。

一个聪明的方法是使用一个。更简单的是,您可以不允许使用括号,并要求用户用空格分隔每个标记(因此14+20可以,但不允许14+20),然后使用字符串#split(“”)分隔标记。如果令牌的第一个字符是数字,则使用Integer.parseInt(str)将其转换为int;如果你得到一个
NumberFormatException
,那可能是因为用户没有包含空格(你试图把“14+20”变成一个整数)

你真的写过代码吗?谷歌解析:几个链接:(c++,但是一些不错的伪代码),(c#,但是应该可以翻译成java)@MichaelPerrenoud我写过,但是我正在玩一个叫做Minecraft的游戏,我不确定在这里发布我的bukkit代码是否合适。它也在我的另一台计算机上。虽然这可能会破坏表达式的工件,但它无法管理PEMDAS规则的复杂性。这个问题比这个复杂得多。他应该使用递归下降解析器,这在管理PEDMAS方面做得很好,但从他的问题来看,无论出于什么原因,他似乎更愿意使用一个蹩脚的丁克解析器。