「后缀表达式怎么求java」后缀表达式怎么求例题

博主:adminadmin 2022-12-26 20:21:08 63

本篇文章给大家谈谈后缀表达式怎么求java,以及后缀表达式怎么求例题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 设计算法,计算用后缀表示法表示的算术表达式的值。

你好!

后缀表达式也称逆波兰表达式,其优点就在于可以方便的用栈实现表达式的值的计算。和你说一下思路吧:

·从头读入表达式

·如果遇到数则将其压入栈

·如果遇到运算符,从栈中弹出栈顶连个数,实行相应运算,将结果压入栈中

·直到表达式尾,此时栈中应该只有一个元素,即运算结果

·Over

如果对你有帮助,望采纳。

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堆栈和后缀表达式求值。

import org.python.util.PythonInterpreter;

public class FirstJavaScript {

public static void main(String args[]) {

PythonInterpreter interpreter = new PythonInterpreter();

interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");

interpreter.exec("print days[1];");

}// main

}

java测试后缀表达式

public void method(){

this.intrinsicLock.lock();

try{

method body;

}finally(){

this.intrinsicLock.unlock();

}

}

java里中缀表达式怎么变成后缀表达式 用堆栈 只要说下原理就行了啊 文字表达下 有括号的情况

将中缀表达式转换为后缀表达式的算法思想:

·当读到数字直接送至输出队列中

·当读到运算符t时,

a. 将栈中所有优先级高于或等于t的运算符弹出,送到输出队列;

b. t进栈

·读到左括号时总是将它压入栈中

·读到右括号时,将靠近栈顶的第一个左括号上面的运算符全部依次弹出,送至输出队列后,再丢弃左括号。

运用后缀表达式进行计算的具体做法:

·建立一个栈S

·从左到右读后缀表达式,读到数字就将它转换为数值压入栈S中,读到运算符则从栈中依次弹出两个数分别到Y和X,然后以“X 运算符 Y”的形式计算机出结果,再压加栈S中

·如果后缀表达式未读完,就重复上面过程,最后输出栈顶的数值则为结束

关于后缀表达式怎么求java和后缀表达式怎么求例题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。