java 表达式转化二叉树_[Java]算术表达式求值之三(中序表达式转二叉树方案 支持小数)...

Entry类 这个类对表达式的合法性进行了粗筛:

packagecom.hy;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;//此类用于把算术表达式送入解析器

public classEntry {public static void main(String[] args) throwsIOException{//取得用户输入的表达式

BufferedReader br = new BufferedReader(newInputStreamReader(System.in));

String rawExpression= null;

System.out.print("请输入算术表达式:");

rawExpression=br.readLine();//得到合法的算术表达式

String expression="";for(int i=0;i

char c=rawExpression.charAt(i);//System.out.print(c+",");

if(Character.isDigit(c) || c=='+' || c=='-' || c=='*' || c=='/' || c=='(' || c==')' || c=='.'){//System.out.print(c);

expression+=c;

}else{

System.out.print(" "+c+"不是合法的算术表达式字符.");

System.exit(0);

}

}//送去解析

Lexer p=newLexer(expression);//p.print();//

Tree t=newTree(p.getInfixList());try{

System.out.println(t.evaluate());

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

执行结果 以下测试用例都通过了:

请输入算术表达式:1+2+3

6.0请输入算术表达式:1+2*3

7.0请输入算术表达式:2*(3+4)14.0请输入算术表达式:1+2*(6-4)5.0请输入算术表达式:1+2*(5-4)+6-7

2.0请输入算术表达式:(1+2)*3-4*(6-5)5.0请输入算术表达式:(1+2)*(3+4)21.0请输入算术表达式:1.1*5+(3+4)*10

75.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值