去空格的四则运算表达式求值-Java
笔记
package com.daidai.day4.demo1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld{
public static void main(String args[]){
String a;
int buf=0;
a=new Scanner(System.in).nextLine().trim().replace(" ","");
ArrayList<Integer> number=new ArrayList<Integer>();
ArrayList<String> op=new ArrayList<String>();
for(int i = 0; i<a.length(); i++){
if(a.charAt(i)>='0'&&a.charAt(i)<='9') {
buf = buf * 10 + (a.charAt(i) - '0');
if(i==a.length()-1){
number.add(buf);
}
}else{
if(op.isEmpty()){
number.add(buf);
op.add(a.charAt(i)+"");
}else{
if(op.get(op.size()-1).equals("*")){
number.set(number.size()-1,number.get(number.size()-1)*buf);
op.remove(op.size()-1);
op.add(a.charAt(i)+"");
}else if(op.get(op.size()-1).equals("/")){
number.set(number.size()-1,number.get(number.size()-1)/buf);
op.remove(op.size()-1);
op.add(a.charAt(i)+"");
}else{
number.add(buf);
op.add(a.charAt(i)+"");
}
}
buf=0;
}
}
while(!op.isEmpty()){
if(op.get(op.size()-1).equals("+")){
number.set(number.size()-2,number.get(number.size()-2)+number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}else if(op.get(op.size()-1).equals("-")){
number.set(number.size()-2,number.get(number.size()-2)-number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}else if(op.get(op.size()-1).equals("*")){
number.set(number.size()-2,number.get(number.size()-2)*number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}else{
number.set(number.size()-2,number.get(number.size()-2)/number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}
}
System.out.println(number.get(0));
}
}
本文来自博客园,作者:代代五三,转载请注明原文链接:https://www.cnblogs.com/daidai53/p/14604540.html