-1

我在 java 上编程服务器,我需要在 JUEL 的帮助下使用数学。

例如 2*2+2 ,它会打印出结果 6。问题是,它不起作用。

这里有一个数学方法:

public static void Math(String operation){

    ValueExpression expr = f.createValueExpression(cont, "${" + operation + "}", Object.class);
    out.print(expr);

}

因此,我将操作作为字符串“8+5+4”并在控制台上打印出结果。

我可能以错误的方式使用 JUEL 吗?

try{
        while ((newLine = in.readLine()) != null) {
            try {
               Pattern patternMath = Pattern.compile("<MATH>(\\s*?)(\\d+)(\\s*?)([-+/\\*])(\\s*?)(\\d+)");
               Matcher matcher = patternMath.matcher(newLine);

                Pattern pattCSEN = Pattern.compile("<RU-EN>(.*)");
                Matcher matCSEN = pattCSEN.matcher(newLine);

                Pattern pattENCS = Pattern.compile("<EN-RU>(.*)");
                Matcher matENCS = pattENCS.matcher(newLine);




                if (matENCS.find()) {out.println("<TRANSLATION> " + ENGtoCZ(matENCS.group(1)));}
                else if (matCSEN.find()) {out.println("<TRANSLATION> " + CZtoENG(matCSEN.group(1)));}
               else if (newLine.equals("<BYE>")) {
                    clientSocket.close();

                }
                else  if (matcher.find()) {

               Math(newLine);

                } else {
                    out.println("<FAIL>");
                    clientSocket.close();

                }
            }catch(Exception ex){
                clientSocket.close();;
            }}
            } catch (Exception e) {
                out.println("<FAIL>");
                clientSocket.close();
            }
        }
4

1 回答 1

0

以下是始终确保您的代码中有以下几行。确保您的上下文设置如下:

SimpleContext context = new SimpleContext();

您的表达式对象应该是已实现类,如下所示:

ExpressionFactory factory = new ExpressionFactoryImpl();

尤尔阿皮

其次,将您的 ValueExpression 放在 try 块中,以防出现任何问题,您将从捕获的异常中知道问题所在。

检查如何使用 a 输入表达式,System.out如下所示:

Object display = expr.getValue(context);
System.out.println("> " + display);

一些额外的参考在这里

于 2015-04-12T16:11:26.783 回答