java实现 加减乘除 + - */

信息屋 2014-05-14 09:24:34
做一个计算器
Java如何实现
在jTextField 中显示String "1+2-3*4/5
按下=键
如何处理

String s="1+2-3*4/5"; 整型
String s2="1.23+2.34-3.45*4.5/6.6" 浮点数
字符串
先计算乘除 再计算加减

...全文
2657 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljl3535960 2014-10-21
  • 打赏
  • 举报
回复
这个Java程序就是实现了最基本的功能,代码是ok的,没有错误
鸿洋_ 2014-05-15
  • 打赏
  • 举报
回复
研究了好久,还好研究出来了,1+2-3*4/5这样的运算需要依赖与两个栈实现,一个符号栈,一个数字栈。 a、首先1入数字栈,+号入符号栈,2入数字栈 b、当前2个数字,一个符号,可以尝试运算,取下一个操作数 - ,因为 - <= + c、1、2分别出栈,+号出栈,计算结果为3 ,然后入数字栈。 d、- 号入符号栈 , 3 入 数字栈 , 可以尝试运算, 取下一个操作符 * ,因为 * >= - e、* 入栈 , 4入栈, 尝试计算 , 取下一个操作符 / ,因为 / <= * f、3、4出栈, * 出栈 , 计算 3 * 4 =12 ,结果入栈。 g、5入栈 , 算数式结束,直接计算,12 、5 出栈, / 出栈, 计算12/5= 2 入栈 h、3 、 2 出栈 , - 号出栈 , 3- 2 = 1 最后结果为1 。 手打了这么久,楼主你要是不拿个笔画出整个过程,对不起哥啊,,,,,,
suciver 2014-05-15
  • 打赏
  • 举报
回复
利用JDK1.6以及更高版本提供的脚本技术。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class Test {
	public static void main(String[] args) throws Exception {
		ScriptEngineManager sem=new ScriptEngineManager();
		ScriptEngine engine=sem.getEngineByExtension("js");
		double result=(Double)engine.eval("1.23+2.34-3.45*4.5/6.6");
		System.out.println(result);
	}
}
WayneXuan 2014-05-15
  • 打赏
  • 举报
回复
调度场算法中缀表达式转成后缀表达式,就能直接计算了
tony4geek 2014-05-15
  • 打赏
  • 举报
回复
用BigDecimal

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧