java输入类似于1+2+3+4这样的自定义四元算式,如何把各个字符提出来然后赋值给a,b.c等

运算符号要可以自定义,比如3-2+3-4或者1*3/4-4之类的

算术表达式 求值的经典方法 就是把 中缀表达式转化成 后缀表达式,
算法如下:
1,初始化一个空堆栈,将结果字符串变量置空。
2,从左到右读入中缀表达式,每次一个字符。
3,如果字符是操作数,将它添加到结果字符串。
4,如果字符是个操作符,弹出(pop)操作符,直至遇见开括号(opening parenthesis)、优先级较低的操作符或者同一优先级的右结合符号。把这个操作符压入(push)堆栈。
5,如果字符是个开括号,把它压入堆栈。
6,如果字符是个闭括号(closing parenthesis),在遇见开括号前,弹出所有操作符,然后把它们添加到结果字符串。
7,如果到达输入字符串的末尾,弹出所有操作符并添加到结果字符串。
这个是 Donald Knuth 于 1962年 描述的.
比如 2+3*4+(2+3)*5 转换成后缀表达式为: 234*+23+5*+
对后缀表达式求值 就不难了,
从左到右读入后缀表达式
如果字符是一个操作数,把它压入堆栈。
如果字符是个操作符,弹出两个操作数,执行恰当操作,然后把结果压入堆栈
到后缀表达式末尾,从堆栈中弹出结果。
温馨提示:内容为网友见解,仅供参考
无其他回答

java输入类似于1+2+3+4这样的自定义四元算式,如何把各个字符提出来然后...
1,初始化一个空堆栈,将结果字符串变量置空。2,从左到右读入中缀表达式,每次一个字符。3,如果字符是操作数,将它添加到结果字符串。4,如果字符是个操作符,弹出(pop)操作符,直至遇见开括号(opening parenthesis)、优先级较低的操作符或者同一优先级的右结合符号。把这个操作符压入(push)堆栈...

Java输入一个表达式 怎么让它直接输出结果 如 输入:1+2*3+3\/4+2*3...
用java的正则表达式解析该表达式 把数字和运算符依次读取出来 然后转换为java表达式 1+2*3+3\/4+2*3-5 直接输出就可以了~

编写一个java程序,计算1+2!+3!+4!+……前100项之和
public class 阶乘和 { public static void main(String[] args) { int ji=1;int sum =0;for(int i=1;i<=10;i++) { ji=ji*i;sum = sum+ji;System.out.println(ji);} System.out.println("和为:"+sum);} } 这是小于10 的,他的和为4037913 ,所以100 你得改数据类型,太...

用JAVA,循环实现下面效果,求出最终的值 1*2*3+3*4*5+5*6*7+...99*...
public static void main(String[] args) { int sum = 0;for(int i=1; i<100; i+=2){ sum+=i*(i+1)*(i+2);} System.out.println(sum);}

如何证明1+2+3+4+...+n=
顾名思义,一个部分和是序列或数列中某个特定部分的总和。求和是从第一项到那个特定项的总和。为了更清楚一点,看看这个系列1 + 2 + 3 + 4 +···的部分和。第一项(1) = 1 第一项+第二项(1+2) = 3 第一项+第二项+第三项(1+2+3) = 6 第一项+第二项+第三项+第四项(1+2+...

1+2+3+4...+98+99+100,从1一直加到100,等于多少
1+2+3+4...+98+99+100,从1一直加到100,等于5050 这属于等差数列,该等差数列的首项为1,公差为1,项数为100.根据等差数列求和公式S=(a1+an)n÷2得:总和为(1+100)×100÷2=5050。如果未学等差数列,你可以设想:1+100=101;2+99=101……50+51=101,一共有50个101,50×101=...

java删除数组中元素 举个例子: int a[]={1,2,3,4,5} 我能得到下标 删除...
只能这样:首先确定你的数组中的元素的最大值和最小值(就是数组的范围,如:只能是大于等于0的),然后将目标元素a[3]的值改为比0小的(就是在这个数组范围以外的数字),然后排序 sort(),这样数组中的那个范围以外的元素就跑到最后的位置,然后再新建一个比原来数组小1位的数组,然后赋值,这样,...

(java编程) 输入一个数字,则输出其加法表 比如输入5,则输出 0+5=5 1...
import java.util.Scanner;public class 累加 { public static void main(String[] args) { \/\/ TODO Auto-generated method stub Scanner sc = new Scanner (System.in);System.out.print("请输入一个值:");int j = sc.nextInt();System.out.println("根据这个值可以输出以下加法表:");for...

用Java编写一个程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+4+5+…+100...
public static void main(String[] args) { int sum = 0;for(int i = 1; i <= 100; i++){ int sumI = 0;\/\/calc (1+2+3) for 3 for(int j = 1; j <= i; j++){ sumI = sumI + j;} sum = sum + sumI;} System.out.println("1+(1+2)+(1+2+3)+…+(1+2+...

输入一个字符串,包含数字和加(+)、减(-)、乘(*)、除(\/)等四则运算符号...
+)、减(-)、乘(*)、除(\/)等四则运算符号,符串的四则运算。给出一个字符串,包含0~9的数字和+-*\/()的运算符,-仅代表减号不代表负数。举例如下:输入:1+2*(3-4),输出:-1。思路:分析字符串的合法性, 模拟四则运算规则,按照先括号后乘除最后加减的顺序计算(逆波兰式)。

相似回答