A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 帆~ 初级黑马   /  2014-7-3 23:35  /  1337 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一道华为JAVA比武大赛试题,你能解答吗?
据说这是华为2005年中央平台开发部的JAVA比武大赛中的必做题,当时难倒了不少人。你能够给出最佳答案吗?把你的代码帖出来,看看谁的算法最简单最高效。
  要求:
/////////////////////input.txt样例////////////////////////////////
1+3/7*2=
4+2/*asjdff*/5-8=
5%2+5-2/*4=6/*i**ifdg***/*84o*/*1-2=
………………………………………         //更多表达式省略
/////////////////////////////////////////////////////////////////

/////////////////////output.txt样例////////////////////////////////
1+3/7*2=43
4+2/*asjdff*/*5-8=6
5%2+5-2/*4=6/*i**ifdg***/*84o*/*1-2=??
………………………………………         //更多表达式省略
/////////////////////////////////////////////////////////////
  1. 要求用JAVA实现。
  2. 若在命令行参数中指明了 input.txt 和 output.txt,请计算出input.txt中每一行表达式的值,并写入到output.txt文件中
  3. 若在命令行参数中只指明了 input.txt,则新建一个output.txt,计算出input.txt中每一行表达式的值,并写入到output.txt文件中
  4. 若在命令行参数中没有指明 input.txt 和 output.txt,则输入一个类似4+2/*asjdff*/*5-8这样的表达式,计算1000次这个表达式的值,在屏幕中输出结计算结果和所用时间。

5 个回复

倒序浏览
/*4=6/*i**ifdg***/*84o*/
难道这一段是一个整体的注释?
回复 使用道具 举报
pre:
  建立一个表达式优先级线性表,如+-/%*()等
  建立一个源数组
  建立一个结果数组
1 IO操作将每一行读入数组,
    1.1 使用正则替换注释。
    1.2 逐个把此行的每个操作符(数)压栈。
    1.3 压栈优先级相等时计算,并将结果存入结果数组

2 IO操作建文件。
    2.1将源数组的每一行+结果每一行写入文件的每一行
回复 使用道具 举报
我的思路是:定义一个数据栈,栈中存储的是各个计算符号的运算的优先级,每次运算的时候按照优先级运算就可以啦,记得不错的话我以前用C语言写过,这样的程序
回复 使用道具 举报
自己技术差,还看不懂
回复 使用道具 举报
最讨厌这种题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马