本帖最后由 zhuangyangoal 于 2010-01-06 15:33:18 编辑

解决方案 »

  1.   


            public static void main(String[] args) {
    String param = "TRUE";
    Boolean boo = Boolean.parseBoolean(param);
    if (boo) {
    System.out.println("123");
    } else {
    System.out.println("456");
    } }意思理解错了
      

  2.   

    想把String直接转成Bollean的???
      

  3.   

    实际上是想把"2>1"变成表达式2>1执行
      

  4.   

    http://www.blogjava.net/killme2008/archive/2007/08/06/134668.html
    仔细想了下。。明白LZ意思了,这里有个实现。瞧瞧。
      

  5.   

    额,我想到的是用beanshell………………
      

  6.   

    public class Test { public static void main(String[] args) {
    String ss = "2000<1";
    String[] array = null;
    String compareble = null;
    boolean boole;
    if (ss.contains(">")) {
    array = ss.split(">");
    compareble = ">";
    } else {
    array = ss.split("<");
    compareble = "<";
    } int[] aaa = new int[2];
    for (int i = 0; i < array.length; i++) {
    aaa[i] = Integer.parseInt(array[i]);
    System.out.println(aaa[i]);
    }
    if (compareble.equals(">")) {
    boole = aaa[0] > aaa[1];
    } else {
    boole = aaa[0] < aaa[1];
    }
    if (boole) {
    System.out.println("123");
    } else {
    System.out.println("345");
    }
    }}
    自己在包装一下
      

  7.   

    Boolean boo = Boolean.parseBoolean(param);  ? 可以执行?
      

  8.   

    应该是boolean boo = Boolean.parseBoolean(param);吧
      

  9.   


    public class Test {
    public static void main(String[] args) {
    Interpreter i=new Interpreter();
    String a="2>1";
    try {
    Boolean b=(Boolean) i.eval(a);
    if(b){
    System.out.println("123");

    }else{
    System.out.println("456");
    }
    } catch (EvalError e) { e.printStackTrace();
    } }}
    输出为123
      

  10.   

    我想不翻API 要把 "2>1"  变成2>1
    只能一个字符一个字符的类型转换了吧。
      

  11.   

    有收费的JEP,不过好象有免费下载,支持布尔类型的String数学表达式,这个东西作用就是Java计算数学公式。
    google搜索关键字Java 数学公式。
      

  12.   

    貌似又找到2种另劈西径的办法
    1,拼一个SQL语句,丢数据库里执行获得结果。
    2,利用Javascript的eval函数,转换得到。
    第二个参考
    http://ruyuntao.javaeye.com/blog/406935
    使用的是ScriptEngine
      

  13.   


    public class Test2 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s = "2221>1111";
    int a = 0;
    int b = 0;
    if(s.indexOf(">")>0){
    int i = s.indexOf(">");
    a = Integer.parseInt(s.substring(0, i));
    b = Integer.parseInt(s.substring(i+1));
    System.out.println(a > b);
    }
    }
    }
    只想到了这个笨方法,不过只是分割这么小的字符串,应该不存在效率问题
      

  14.   

    如果jdk版本低于1.6,可以用bsf库做,这个库执行脚本程序。
    如果jdk在1.6以上,可以用java标准库javax.script包做。这里有个例子。
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;public class ExpressionCalculate {
    public static void main(String[] args){
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("javascript");
    boolean result = false;
    try {
    result = Boolean.parseBoolean(engine.eval("2>3").toString());
    } catch (ScriptException e) {
    e.printStackTrace();
    }
    System.out.println("result is:"+result);
    }
    }
      

  15.   

    我来发下现在的例子:
    读取的xml:
    <ids>
    <id id="零件" name="零件">
    <type>重金属</type>
    <condition>
    <param>cost&gt;0</param>
    <param>price&lt;100</param>
    <param>type==普通钢材</param>
    <result>NOR_</result>
    </condition>
    </id>
    </ids>我要读取<param>标签里面的值作为将来if判断括号里的条件
    用javascript的那个方法好像就不行了吧
      

  16.   

    注意XML语法,与java本身语法的转化
      

  17.   

    其实想法就是把if里面的条件拿到外面的xml里去了,这样可以方便修改
    程序不会写死...大家有何种建议?例如param里面的cost实际上就是一个类的字段名
      

  18.   


    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;public class ExpressionCalculate {
    public static void main(String[] args){
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("javascript");
    boolean result = false;
    try {

    engine.put("action", new ScriptObject());
    Object obj = engine.eval("action.print(action.getCount()+\"\");" +
    "action.getCount()>5");
    System.out.println("obj is:"+obj);
    } catch (ScriptException e) {
    e.printStackTrace();
    }
    System.out.println("result is:"+result);
    }

    }
    class ScriptObject{
    private int count = 0;
    public void print(String printText){
    System.out.println("script print:\n"+printText);
    }
    public int getCount(){
    return count;
    }

    }
    可以在脚本里调用java代码
      

  19.   

    也许,可以改下XML结构,避免使用表达式分析器
    举个例子<param>price&lt;100 </param>改成<param operate="lt" propertie="price">100</param>然后Java代码中写入大于,小于,等于,或者其他类型的操作,根据operate的不同调用不同的操作方式。
    参考commondo模式写这个架构应该不错。个人人为XML里出现html转意字符貌似不大好。
      

  20.   

    竟能想到用script处理 真是聪明的人类啊。
      

  21.   

    这个小例子已经做成了:
    需求是这样:
        根据XML里面的规则生成id
        可以随时修改xml里面的条件,
        在不用修改代码的情况下生成xml对应的ID编码
    例子简单虽然做成,但是还没有完全封装,不过还是感谢各位兄弟姐妹
    我觉得这个例子大家还可以讨论,就是散的分少了...