java 计算 公式_java输入一个计算公式,得出结果的正确的计算算法

package learn;

//本程序只能计算正整数范围内的加减乘除运算。

import java.util.*;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class LX2x

{

//优先级数组,precede[i][j],表示第i个操作符与第j个操作符的优先级,0,1,2,3,4,5,6分别是'+', '-', '*', '/', '(', ')', '#'

//0表示,第i个操作符优先级小于第j个操作符。1表示大于,2表示相等,3是表示不可能的。

//+ , - , * , / , ( , ) , #

int precede[][]={{1 , 1 , 0 , 0 , 0 , 1 , 1}, // +

{1 , 1 , 0 , 0 , 0 , 1 , 1}, // -

{1 , 1 , 1 , 1 , 0 , 1 , 1}, // *

{1 , 1 , 1 , 1 , 0 , 1 , 1}, // /

{0 , 0 , 0 , 0 , 0 , 2 , 3}, // (

{1 , 1 , 1 , 1 , 3 , 1 , 1}, // )

{0 , 0 , 0 , 0 , 0 , 3 , 2}};// #

char[] operate={'+', '-', '*', '/', '(', ')', '#'};

String exp=null;

public LX2x(String exp)

{

this.exp=exp;

}

void getValueInt()

{ //从0开始扫描表达式字符串。

Stackoptr=new Stack();

Stackopnd=new Stack();

String expression=exp+"#"; //给表达式加一个运算符,且是一个结束符

optr.push(6); //先把'#'操作符对应的序号入栈。

int index=0;

char c=0;

String regex="([-]?[0-9]+(\\.([0-9]+)?)?)";

Pattern numberPattern=http://www.doczj.com/doc/887bb03b0242a8956aece41c.htmlpile(regex);

Matcher numberMatcher=numberPattern.matcher(expression);

while(index{

if(numberMatcher.find(index))

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值