java四则运算表达式不包含括号
题⽬描述
⼩明,幼⼉园⼩班学⽣。
爸爸:⼩明,1+1等于⼏呀?
⼩明:嗯...... 等于 2。
爸爸: 太棒了。那1+1+2等于⼏呀?
⼩明:不知道,⽼师没教......
可伶的⼩明,⼩⼩年纪就要计算这么“复杂”的运算了。为了帮助⼩明,请你设计并实现⼀个程序,能够⾃动计算出式⼦结果。
⼩明会请你吃棒棒糖的。^_^
规则1:实现 +、-、X、/ 四则运算,数据仅包含整数,不考虑计算结果溢出的情况
equals不等于
规则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 compare;
import java.util.Stack;
public class GetCompareResult {
/**
* @param args
*/
public static void main(String[] args) {
public static void main(String[] args) {
/
/ TODO Auto-generated method stub
String 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);
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;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论