Discuss / Java / 大佬可否指点一下写的不足

大佬可否指点一下写的不足

Topic source
import java.util.*;import java.util.regex.Pattern;import java.util.regex.Matcher;import java.util.Collections;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;public class sb {    public static void main(String[] args) {        String exp = "1 + 2 * (9 - 5)";        SuffixExpression se = compile(exp);        int result = se.execute();        System.out.println(exp + " = " + result + " " + (result == 1 + 2 * (9 - 5) ? "✓" : "✗"));    }    static SuffixExpression compile(String str){//过程        // TODO:        String a = "";        ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");        List<String> intlist = new ArrayList<String>(); //定义对象依次存放每一个字符        List<String> fuhaolist = new ArrayList<String>(); //定义对象依次存放每一个字符        Deque<String> d = new LinkedList<>();        for(int i=0;i<str.length();i++){            String ss = String.valueOf(str.charAt(i));            if(isNumeric(ss)){                intlist.add(ss);            }else{                if(ss.equals("(")||ss.equals(")")||ss.equals(" ")){                    continue;                }                fuhaolist.add(ss);            }        }        Collections.reverse(fuhaolist); // 倒序排列        for(String i:intlist){            d.push(i);        }        for(String l:fuhaolist){            //- * +            try{                String fp = d.pop();                String sp = d.pop();                String spf = null;                if(Integer.valueOf(fp).intValue()<Integer.valueOf(sp).intValue()){                    spf=String.format("%s %s %s",sp,l,fp);                }else{                    spf=String.format("%s %s %s",fp,l,sp);                }                d.push(String.valueOf((int)jse.eval(spf)));//                System.out.println((int)jse.eval(spf));            }catch (Exception t) {}        }        //for(String lsd:d){System.out.println(d);}        return new SuffixExpression(d);    }    public static boolean isNumeric(String str){        Pattern pattern = Pattern.compile("[0-9]*");        Matcher isNum = pattern.matcher(str);        return isNum.matches();    }}class SuffixExpression {    Deque<String> ds;    public SuffixExpression(Deque<String> ds){        this.ds = ds;    }    int execute() {//结果        // TODO:        return Integer.parseInt(ds.peek());    }}

不太明白这边class类,以及compile方法的定义区别,都是用来干什么的


  • 1

Reply