处理字符集中的算式问题

Posted BigOcean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理字符集中的算式问题相关的知识,希望对你有一定的参考价值。

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

 

以上是关于处理字符集中的算式问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从该片段中的 onItemSelectedListener 中获取微调器单击的项目?

如何在导航抽屉活动模板中的片段之间传递字符串变量

双栈完全解决计算器问题

java中怎么将字符串(带运算符号加减乘除)转换成代数算式运算

CSP核心代码片段记录

比较 C# 中的字符串片段并从集合中删除项目