处理字符集中的算式问题
最近遇到一个编程题.题目是这样的:
接收一个字符型的算式,如"1+2*3+4",按顺序,每遇到一个数字,则进行运算至该数字的结果.比如传入的是"1+2*3+4",那么结果是1,3,7,11.
有的地方表达可能不一样,我的理解记下来的题目就是这样.回来后写了下,用java语言处理的.
1 package com.bhy.epay; 2 3 import javax.script.ScriptEngine; 4 import javax.script.ScriptEngineManager; 5 import javax.script.ScriptException; 6 7 public class testString { 8 static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript"); 9 10 public static void main(String[] args) throws ScriptException { 11 String str = "1+2*3+4"; 12 char[] arr=str.trim().toCharArray(); 13 Object sum = 0; 14 if(str != null && !"".equals(str)){ 15 for(int i=0;i<str.length();i++){ 16 if(!Character.isDigit(arr[i])){ // 如果不是数字 17 String strAfter = str.substring(0, i); 18 sum = jse.eval(strAfter); 19 System.out.println(sum); 20 } 21 if(i == str.length()-1){ // 处理最后一位数字 22 System.out.println(jse.eval(str)); 23 } 24 } 25 } 26 } 27 28 }