java四则运算表达式不包含括号

题目描述

小明,幼儿园小班学生。

爸爸:小明,1+1等于几呀?

小明:嗯…… 等于 2。

爸爸: 太棒了。那1+1+2等于几呀?

小明:不知道,老师没教……

可伶的小明,小小年纪就要计算这么“复杂”的运算了。为了帮助小明,,请你设计并实现一个程序,能够自动计算出式子结果。

小明会请你吃棒棒糖的。^_^

规则1:实现 +、-、X、/ 四则运算,数据仅包含整数,不考虑计算结果溢出的情况

规则2:程序仅需要实现类似"a + b * c / d -e" 这种类型字符串的计算,式子中操作符的个数不超过10个。其他复杂情况不考虑。

例子1:

输入: 1 + 2

输出: 3

输入: 1 + 2 * 3 – 4 / 2

输出: 5

输入

2 + 2 * 3 / 2 – 1

输出

4

样例输入

10*100-3

样例输出

997

package com.compare;import java.util.Stack;public class GetCompareResult {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubString result=getResult("1+2*300-40/2");System.out.println(result);} public static String getResult(String input){ String result=""; Stack<String> stack=new Stack<String>(); Stack<String> digtalstack=new Stack<String>(); Stack<String> symbolstack=new Stack<String>();for (int i = 0; i < input.length(); i++) {char c = input.charAt(i);if (Character.isDigit(c)) {if (!stack.isEmpty()) {String temp = stack.peek();if (temp.equals("+") || temp.equals("-")|| temp.equals("*") || temp.equals("/")) {stack.push(String.valueOf(c));} else {String temp1 = stack.pop();String temp2 = temp1 + String.valueOf(c);stack.push(temp2);}} else {stack.push(String.valueOf(c));}} else {stack.push(String.valueOf(c));}} System.out.println(stack);while(!stack.isEmpty()){String temp1=stack.pop();if(temp1.equals("+")||temp1.equals("-")||temp1.equals("*")||temp1.equals("/")){symbolstack.push(temp1);}else{if(digtalstack.isEmpty()){digtalstack.push(temp1);}else{if(!symbolstack.isEmpty()){String temp2=symbolstack.peek();if(temp2.equals("*")){String temp3=digtalstack.pop();symbolstack.pop();int d=Integer.parseInt(temp3);int e=Integer.parseInt(temp1);digtalstack.push(String.valueOf(d*e));}else if(temp2.equals("/")){String temp4=digtalstack.pop();symbolstack.pop();int d=Integer.parseInt(temp4);int e=Integer.parseInt(temp1);digtalstack.push(String.valueOf(e/d));}else{digtalstack.push(temp1);}}}}}System.out.println(digtalstack);System.out.println(symbolstack);while(!digtalstack.isEmpty()){String temp1=digtalstack.pop();if(!symbolstack.isEmpty()){String temp=symbolstack.pop();if(temp.equals("+")){String temp2=digtalstack.pop();int d=Integer.parseInt(temp1);int e=Integer.parseInt(temp2);digtalstack.push(String.valueOf(d+e));}else{String temp2=digtalstack.pop();int d=Integer.parseInt(temp1);int e=Integer.parseInt(temp2);digtalstack.push(String.valueOf(d-e));}}else{result+=temp1;}}return result; }}

十年干戈天地老,四海苍生痛苦深。

java四则运算表达式不包含括号

相关文章:

你感兴趣的文章:

标签云: