题目1019:简单计算器
2016-01-15 20:45
393 查看
题目1019:简单计算器
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6836
解决:2510
题目描述:
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输入:
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
输出:
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
样例输入:
样例输出:
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6836
解决:2510
题目描述:
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输入:
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
输出:
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
样例输入:
1 + 2 4 + 2 * 5 - 7 / 11 0
样例输出:
3.00 13.36
import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.StreamTokenizer; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { Scanner cin = new Scanner(new BufferedInputStream(System.in)) ; PrintWriter cout = new PrintWriter(System.out) ; String str ; while(true){ str = cin.nextLine() ; if(str.equals("0")) break ; new Task().solve(str, cout); } cout.flush() ; } } class Task{ void solve(String str , PrintWriter cout){ String[] oo = str.split(" ") ; Stack<Double> num = new Stack<Double>() ; Stack<String> operator = new Stack<String>() ; operator.add("+") ; String latest = "+" ; for(int i = 0 ; i < oo.length ; i++){ String o = oo[i] ; if("+-*/".contains(o)){ latest = o ; if(o.equals("+") || o.equals("-")) operator.add(o) ; } else if("*/".contains(latest)){ Double a = num.pop() ; Double b = Double.parseDouble(o) ; Double c = null ; if(latest.equals("*")) c = a * b ; else c = a / b ; num.add(c) ; } else num.add(Double.parseDouble(o)) ; } double sum = 0 ; while(! operator.isEmpty()){ if(operator.pop().equals("+")){ sum += num.pop() ; } else sum -= num.pop() ; } cout.printf("%.2f\n", sum) ; } }
相关文章推荐
- IOS 开发的官方文档链接
- iOS 多线程之GCD
- C++创建二叉树(一)
- 【应用】归并有序表
- 学习设计模式笔记
- [Android Pro] svn实例
- linux 挂载硬盘,创建新分区,删除分区
- Ubuntu升级到14.04
- ubuntu14.04 caffe配置中cudnn的配置
- HBase的javaAPI的增删改查的基本操作实现
- freemark如何判空容错
- C++:友元3(复数的加法)
- Codeforces Gym 100231B Intervals 线段树+二分+贪心
- java中的URLConnection
- 有用的资料:光场相关Light Field(不定时更新)
- IOS使用Xib创建自定义View
- 常用正则表达式——银行卡号,2-6位中文名,手机号
- NSThread
- java中的URLConnection
- 图像局部特征抽取