后缀表达式的java代码 java中缀表达式转后缀表达式并求值

java后缀表达式实现表达式求值

import java.util.Scanner;

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的甘谷网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

import java.util.Stack;

public class 表达式计算 {

private static StackString num = new StackString();//存后缀表达式

private static StackString sign = new StackString();//存入符号

private static StackInteger result = new StackInteger();//放结果

public static void getGroup(String line){//讲字符串转换为后缀表达式

for(int i=0; iline.length(); i++){

char c = line.charAt(i);

if((int)c=48 (int)c=57){//当遇到数字的时候,判断是不是多位数,然后在push进num

int j = i+1;

while(jline.length() (line.charAt(j)=48 line.charAt(j)=57)){

j++;

}

num.push(line.substring(i, j));

i = j-1;

}else if(c == '('){//遇到左括号直接存进num

sign.push(String.valueOf(c));

}else if(c == ')'){//遇到右括号从sign中pop栈顶元素push到num知道遇到'(',然后再pop掉'('

while(!sign.peek().equals("(")){

num.push(sign.pop());

}

sign.pop();

}else{

int n = 0;

if(!sign.empty()){//如果sign中没有元素,直接令n = 0

n = getNum(sign.peek().charAt(0));

}

int m = getNum(c);

if(m = n){//如果当前元素的运算级别比栈顶元素运算级别要高,就直接push进sign

sign.push(String.valueOf(c));

}else{

while(m n){//如果当前运算运算级别比sign栈顶元素运算级别要低,就将sign栈顶元素pop并且push进num,知道不符合条件

num.push(sign.pop());//输入例子2*3+6/3的时候,这里一直报错

if(!sign.empty()){

n = getNum(sign.peek().charAt(0));

}else{

n = 0;

}

}

sign.push(String.valueOf(c));

}

}

}

while(!sign.empty()){

num.push(sign.pop());

}

}

private static int getNum(char c){

int n = 0;

switch(c){

case '+':

case '-':

n = 1;

break;

case '*':

case '/':

n = 2;

break;

}

return n;

}

java测试后缀表达式

public void method(){

this.intrinsicLock.lock();

try{

method body;

}finally(){

this.intrinsicLock.unlock();

}

}

java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号

可是可以,但是特别麻烦.

先要把中缀表达式,转换为后缀表达式,再计算后缀表达式.

通常把我们日常中看到的数学表达式称为中缀表达式如:(3+4)*5,

后缀表达式为计算机中容易计算的一种表达式.

A*B+C;转换为后缀表达式后为:AB*C+;

(A+B)*(C-D);转换为后缀表达式后为:AB+CD-*;

后缀表达式中没有括号,优先级为从左至右

后缀表达式较中缀表达式而言容易计算.

在中缀表达式中做一项运算要考虑优先级,所以要检查后面的字符

在后缀表达式中只要碰到运算符就可以运算了,直到表达式结束.

把中缀表达式转换为后缀表达式,再计算后缀表达式,这个两个过程都可以用数据结构(栈)来完成.

下面是一个C语言的例子.你看了应该会明白一点.(和JAVA差不多)

这是2008上半年程序员考试的题目,五个空分别为:

(1)prt++

(2)0

(3)*ptr-'0'

(4)s,tnum

(5)*result

不知道楼主为什么问这个问题,不可以用其它方式解决吗?


网页名称:后缀表达式的java代码 java中缀表达式转后缀表达式并求值
当前路径:http://scyanting.com/article/doigggi.html