java串拆分:例如将2+4×5/2-6×2-1拆开

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:47:25
想做个计算器^_^
可是呢,将输入串的拆分不会做了^_^
然后呢
算符优先级比较的做法也大概告诉我把!~
^_^
小女子这厢有礼了!~^_^
能不能把源代码给我呢~~

这是很复杂的问题,几十年前已经有人总结出来了,共分三步:
①中缀表达式转后缀表达式
②计算后缀表达式
③得到结果

楼上正解,
关于如何把字符串转换成数据的话就没有什么现成的算法了
基本上先把"123+23*2"转换成3个字符串"123","23"和"2"再用Double.parseDouble(String) 方法把他们转换成3个有理数就可以了

计算器?

那你这串" 2+4×5/2-6×2-1 " 输入字符怎么来的?
手工输入,还是和windows自带的计算器一样有按钮可以点?

如果是和Windows一样的话,我觉得是不是可以把运算符字符串传成和java的运算符一样呢?如: 加运算为:+ 号,除运算为/ 号等等..
这样 你的这串 就可以是 2+4*5/2-6*2-1
不需要考虑拆分,JAVA自己就算出来了,不是吗?

如果手输入的话,可以把输入传递+替换为+号,把×替换为*
或者做个校验?

以上都是愚见,不晓得有没误解你的意思,单从计算器来看,我觉得可以依照上面的实现...

正则表达式,自己看看