去空格的四则运算表达式求值-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));
    }
}

posted @ 2021-04-01 00:37  代代五三  阅读(58)  评论(0编辑  收藏  举报