处理字符集中的算式问题

最近遇到一个编程题.题目是这样的:
  接收一个字符型的算式,如"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 }

 

posted @ 2016-10-23 14:13  我要这昵称有何用  阅读(216)  评论(0编辑  收藏  举报