简易四则运算,利用中缀转后缀表达…
2014-10-31 16:49
232 查看
package com.caculate;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Stack;
public class Caculate {
public
static void main(String[] args) {
String str = "9+(3-1)*3+3/2";
LastExpression le = new Lastexpression_r();
le.toLastexpression_r(str);
le.pop();//调用栈中剩下的符号元素
String ss = le.getResult();
System.out.println(ss);
LastCaculate lc = new LastCaculate();
lc.caculate(ss);
System.out.println("result:"+lc.getResult());
}
}
class LastExpression {
Stack stack
= new Stack();
int level =
0;
StringBuilder sb = new StringBuilder();
public void
toLastexpression_r(String str) {
for(int i = 0;i
if(str.charAt(i)>='0'&&str.charAt(i)<='9')
{
//
System.out.print(str.charAt(i));//数字直接输出
sb.append(str.charAt(i));
} else {
operate(str.charAt(i));//处理各个符号
}
}
}
private void
operate(char ch) {
switch(ch) {
case '+':
case '-':
push(ch,1);break;
case '*':
case '/':
push(ch,2);break;
case '(':
push(ch,0);break;
case ')':
push(ch,3);break;
default:break;
}
}
private void
push(char ch,int priority) {
if(priority == 0) {
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Stack;
public class Caculate {
public
static void main(String[] args) {
String str = "9+(3-1)*3+3/2";
LastExpression le = new Lastexpression_r();
le.toLastexpression_r(str);
le.pop();//调用栈中剩下的符号元素
String ss = le.getResult();
System.out.println(ss);
LastCaculate lc = new LastCaculate();
lc.caculate(ss);
System.out.println("result:"+lc.getResult());
}
}
class LastExpression {
Stack stack
= new Stack();
int level =
0;
StringBuilder sb = new StringBuilder();
public void
toLastexpression_r(String str) {
for(int i = 0;i
if(str.charAt(i)>='0'&&str.charAt(i)<='9')
{
//
System.out.print(str.charAt(i));//数字直接输出
sb.append(str.charAt(i));
} else {
operate(str.charAt(i));//处理各个符号
}
}
}
private void
operate(char ch) {
switch(ch) {
case '+':
case '-':
push(ch,1);break;
case '*':
case '/':
push(ch,2);break;
case '(':
push(ch,0);break;
case ')':
push(ch,3);break;
default:break;
}
}
private void
push(char ch,int priority) {
if(priority == 0) {
相关文章推荐
- 四则运算之中缀表达式转后缀表达式
- 中缀/后缀表达式转换-使用四则混合运算表达式生成树
- 中缀/后缀表达式转换-使用四则混合运算表达式生成树
- 数据结构之栈(中缀转后缀计算四则运算)
- 利用System.Linq.Expressions实现四则运算计算器(二)
- 利用栈进行四则混合运算
- 利用后缀做计算器,运算
- 利用逆波兰表达式(后缀表达式)解析四则运算表达式的详细源代码及解释
- 中缀表达式的计算(只包含四则运算与括号)
- 栈的应用----四则运算,后缀逆波兰表示法(RPN)
- 利用位运算实现四则运算-华为面试
- c++ 直接中缀表达式求值 仅支持正整数的四则混合运算
- 数据结构栈Stack之中缀表达式转后缀表达式运算应用
- 再探利用C++的STL和堆栈编程思想实现数学四则运算计算结果
- 简易四则运算
- 中缀转后缀表达式||后缀表达书计算
- 九、运用栈的知识对后缀表达式的运算方式进行表达
- 二叉树实现运算符优先级算法,支持表达式前缀,中缀,后缀,层次,广义表输出
- 使命栈(stack)实现一个简易的四则运算计算器
- 一个简易的四则运算单元...(15.12.15 BUG更新)