如何使用Java eclips编写一个简单的计算器

来源:百度知道 编辑:UC知道 时间:2024/06/20 09:21:00
步骤:
1.用户输入一段包含运算符的字符串;
2.处理这段字符串,实现判断进而达到计算结果
备注:
请各高手注意:要求是输入一段字符串,进行判断。
而不是先输入两个double变量和一个运算符。
请各高手露两手实现关键代码!谢谢……

这不是帖代码能说得清楚的. 如果想要逻辑清晰,可以分两个步骤进行.

1.生成表达式串的逆波兰式.
2.对逆波兰式求值.

第一步 步骤:

先用二叉树或是栈的结构,将表达式转化成逆波兰式.
比如用栈: (逆波兰式字符串 初值为空串: String pol="";)
1.建立符号优先级表,可以用函数f(s1,s2),查询s1,s2的优先级. 比如查询f("+","*"),返回"*",因为*比+优先级高.
2.构造一个运算符栈(SignStack),此运算符在栈内遵循越往栈顶优先级越高的原则.
3.从左至右开始扫描表达式,如果第i位是数字(起),则取i+1位.直到i+1位为符号止(止).数字即(起)...(止)中间所表示的数字. pol+=数字;
4.扫描中遇到符号(记作si)时(非数字),如果si优先级高于SignStack栈顶,则si入栈,否则,pol+=SignStack.pop() (符号出栈跟在表达式后面), 直到si优先级小于栈顶.si入栈
5.重复4的过程只到表达式尾,pol就是你的输入串的逆波兰式.

第二步:
如果你对第一步的原理了解得非常清楚,这一步就相当简单了.
从右至右扫描,遇到数字就入栈, 遇到运算符出栈,用符号计算前面的入栈数,然后把结果入栈,继续向后扫描直到完成,栈顶就是结果.

说明一下. 其实求逆波兰式的过程中,已经可以把结果求出来了. 但是考虑到楼主是在学知识,所以分两步,这样就能充分了解原理.

首先获取按扭的值放入文本筐.
每次单击都追加一个字符进去.
例如:
1+2-3*4/5
这就是文本筐的值了,假设文本筐的name为textValue,
用script :
eval(document.all.textValue.value);