给定一个字符串“5*(5+9)/7”编写程序,使其计算出结果?谁给我个思路?? 用正则??? 可那个括号有要怎么判断??? 

解决方案 »

  1.   

    先把输入解析成Token流,然后排运算符的优先级,然后计算。解析和运算都可以用递归
      

  2.   

    弱弱的问下Token流是干嘛用的啊
      

  3.   

    String s="5×(5+9)/7";
    String sql="select "+s+" v from dual";
    数据库处理  灵活String s="5×(5+9)/7";
    int s1 = Integer.parseInt(s.substring(0,1));
    int s4 = Integer.parseInt(s.substring(3,4));
    int s6 = Integer.parseInt(s.substring(5,6));
    int s9 = Integer.parseInt(s.substring(8,9));
    System.out.println (s1*(s4+s6)/s9);
    java处理   太死板
    当然我个人感觉正则表达式实现最好
      

  4.   


    String str = "5*(5+9)/7";
    int val = 0;
    String a = str.substring(str.indexOf("(") + 1, str.indexOf(")"));
    String[] b = a.split("\\+", -1);
    val = Integer.valueOf(b[0]) + Integer.valueOf(b[1]);
    String c = str.split("\\*",-1)[0];
    val *= Integer.valueOf(c);
    String d = str.split("/",-1) [1];
    val /= Integer.valueOf(d); 
    System.out.println(val);
    System.out.println(5*(5+9)/7);编译原理
      

  5.   

    String s="5×(5+9)/7";
    String sql="select "+s+" v from dual";
    数据库处理 灵活这样可以?????
      

  6.   

    这个方法不好吗?String s="5×(5+9)/7";
    String sql="select "+s+" v from dual";
    这个 方法不好吗 ?把字符串的×replice成*叫数据库运算 返回结果
      

  7.   


    String s="5×(5+9)/7";
    String sql="select "+s+" v from dual";
    s是你传进去的字符串你编写个sql 连接数据库 查询这条sql语句接受查询的结果查询结果就是运算的结果 不明白吗?我用的oracle数据库
      

  8.   

    select 5*(5+9)/7 v from dual
    你到数据库跑下这条语句看看
      

  9.   


    1,需要连接数据库
    2,和数据库的语法相关,不够灵活最基本的办法就是做词法分析还有个思路,在JAVA中调用JS引擎,使用JS的eval()函数来做,也许可行
      

  10.   

     
    Server2000不可以 执行!
    这个表“dual”  是怎么回事!
      

  11.   

    java算法与数据结构上有。
    中序 转 后序 然后 解析后序。
      

  12.   

    java利用堆栈,JavaScript里面有eval,Java可以调用ScriptManager吧,你还是用最基本的办法吧,锻炼一下思维。
      

  13.   


    ScriptEngineManager factory = new ScriptEngineManager();
            ScriptEngine engine = factory.getEngineByName("JavaScript");
            engine.eval("print(eval('5*(5+9)/7'))");很水。
      

  14.   

     - -~ 用Jav写啊 都回来 大家都跑远了 
      

  15.   

    同意用数据库的方法,应该问题。
    不过LZ如果知道动态代理的话,可以用java的编译compiler类做,这个就是麻烦,能把字符串动态编译java